سلام و عرض ادب خدمت تمام دوستان و همراهان گرامی روکسو، همانطور که در جریان هستید ورود و عضویت کاربران به عنوان یکی از اصلی ترین و مهم ترین بخش های هر وب سایت و استارپ آپ معرفی می شود. اگر سیستم عضویت را در اختیار کاربران قرار دهید طبیعتا می توانید با عضویت هر کاربر اطلاعات مفیدی از آنها دریافت کرده و به عنوان یک بانک اطلاعاتی جهت بازاریابی اینترنتی برای مخاطبان استفاده کنید.
ورود و عضویت کاربران در زبان PHP معمولا همراه با پایگاه داده MySQL می باشد. لذا به دلیل فراگیر بودن این دو سیستم، آموزش زیر بر اساس این زبان و پایگاه داده مذکور می باشد.
در این مقاله از PHP ۷ استفاده شده است. لذا در صورتیکه با زبان PHP نسخه 7 آشنایی ندارید توصیه می شود حتما دوره رایگان آموزش PHP را از طریق لینک زیر مطالعه بفرمایید:
مراحل ساخت اسکریپت ورود و عضویت کاربران در زبان PHP و پایگاه داده MySQL به شرح زیر می باشد:
برای ساخت یک پایگاه داده ابتدا وارد phpmyadmin شوید و سپس با کلیک کردن روی زبانه database نام دیتابیس خود را وارد کنید، سپس روی دکمه ی create کلیک کرده و دیتابیس خود را ایجاد نمایید. در غیر اینصورت می توانید با وارد کردن کوئری زیر در زبانه SQL به صورت مستقیم پایگاه داده خود را ایجاد نمایید:
CREATE DATABASE register;
با این کار یک پایگاه داده در MySQL به نام register ایجاد می گردد.
برای ساخت جدول کاربران ابتدا در phpmyadmin وارد دیتابیس ایجاد شده شوید و سپس دستور کوئری زیر را درون زبانه SQL دیتابیس register وارد کنید:
CREATE TABLE IF NOT EXISTS `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(50) NOT NULL, `email` varchar(50) NOT NULL, `password` varchar(50) NOT NULL, `trn_date` datetime NOT NULL, PRIMARY KEY (`id`) );
با این کار یک جدول به نام users در پایگاه داده register با فیلدهای id و username و email و password و trn_date ایجاد می گردد. همچنین ستون id به عنوان یک ستون ایندکس primary درنظر گرفته شده و از قابلیت AUTO_INCREMENT برخوردار است.
در مجموعه کدهای زیر یک فرم بسیار ساده به زبان HTML نوشته شده است که در آن یک سری توابع و دستورهای PHP اجرا می شود. و در ادامه به توضیح تک به تک دستورات می پردازیم.
درون فولدری که میخواهید این ساختار را پیاده سازی کنید یک فایل به نام registration.php ایجاد نمایید و سپس دستورات زیر را درون آن کپی کنید.
توجه داشته باشید که برای بارگذاری style ها نیازی به استفاده از بوت استراپ نیست بلکه می توانید از فایل css که در ادامه کدها قرار داده شده است بهره ببرید:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>ثبت نام کاربران</title> <link rel="stylesheet" href="css/style.css" /> </head> <body dir="rtl"> <?php require('db.php'); // If form submitted, insert values into the database. if (isset($_REQUEST['username'])){ // removes backslashes $username = stripslashes($_REQUEST['username']); //escapes special characters in a string $username = mysqli_real_escape_string($con,$username); $email = stripslashes($_REQUEST['email']); $email = mysqli_real_escape_string($con,$email); $password = stripslashes($_REQUEST['password']); $password = mysqli_real_escape_string($con,$password); $trn_date = date("Y-m-d H:i:s"); $query = "INSERT into `users` (username, password, email, trn_date) VALUES ('$username', '".md5($password)."', '$email', '$trn_date')"; $result = mysqli_query($con,$query); if($result){ echo "<div class='form'> <h3>ثبت نام شما با موفقیت انجام شد.</h3> <br/>برای ورود روی <a href='login.php'>اینجا</a> کلیک کنید</div>"; } }else{ ?> <div class="form"> <h3>ثبت نام کاربران</h1> <form name="registration" action="" method="post"> <input type="text" name="username" placeholder="نام کاربری" required /> <input type="email" name="email" placeholder="ایمیل" required /> <input type="password" name="password" placeholder="رمز عبور" required /> <input type="submit" name="submit" value="ثبت نام" /> </form> </div> <?php } ?> </body> </html>
فایل style.css:
body { font-family:Arial, Sans-Serif; } body{ font-family: "tahoma" !important; } .clearfix:before, .clearfix:after{ content: ""; display: table; } .clearfix:after{ clear: both; } a{ color:#0067ab; text-decoration:none; } a:hover{ text-decoration:underline; } .form{ width: 300px; margin: 0 auto; } input[type='text'], input[type='email'], input[type='password'] { width: 200px; border-radius: 2px; border: 1px solid #CCC; padding: 10px; color: #333; font-size: 12px; margin-top: 10px; font-family: "tahoma" !important; } input[type='submit']{ padding: 10px 25px 8px; color: #fff; background-color: #0067ab; text-shadow: rgba(0,0,0,0.24) 0 1px 0; font-size: 12px; box-shadow: rgba(255,255,255,0.24) 0 2px 0 0 inset,#fff 0 1px 0 0; border: 1px solid #0164a5; border-radius: 2px; margin-top: 10px; cursor:pointer; font-family: "tahoma" !important; } input[type='submit']:hover { background-color: #024978; }
در ابتدا فرم ثبت نام در PHP را با دستورات HTML آغاز کرده ایم و پس از تگ body اولین دستور PHP خود را نوشته ایم. در این دستور با استفاده از تابع require می توان یک فایل db.php را فراخوانی کرد که در آن روش اتصال به پایگاه داده توضیح داده شده است.
سپس با استفاده از تابع isset بررسی کرده ایم که آیا درخواست username ارسال می شود یا نه؟ اگر این درخواست (یعنی ارسال نام کاربری) ارائه شود، نام کاربری را با استفاده از تابع stripslashes پاکسازی می کنیم. به عبارت دیگر با استفاده از این تابع بک اسلش ها را از نام کاربری برای افزایش امنیت حذف می کنیم.
در خط بعدی با استفاده از تابع mysqli_real_escape_string نام کاربری را از کاراکترهای اضافی فیلتر کرده و تمام این مراحل را برای ایمیل و پسورد انجام می دهیم.
در متغییر trn_date فرمت زمان ذخیره کاربر را مشخص می کنیم. سپس کوئری مشخص برای ثبت نام کاربران در جدول users را می نویسم.
در نهایت پس از اتمام ثبت نام کاربر یک پیام مبنی بر ثبت نام موفقیت آمیز برای او نمایش داده می شود. در صورتیکه تمام مراحل فوق را به درستی انجام داده باشید با تصویر زیر روبه رو خواهید شد:
برای ساخت فرم ورود کاربران یک فایل به نام login.php در مسیر روت (اصلی) پوشه درست کرده و سپس کدهای زیر را درون آن قرار دهید:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>ورود کاربران</title> <link rel="stylesheet" href="css/style.css" /> </head> <body dir="rtl"> <?php require('db.php'); session_start(); // If form submitted, insert values into the database. if (isset($_POST['username'])){ // removes backslashes $username = stripslashes($_REQUEST['username']); //escapes special characters in a string $username = mysqli_real_escape_string($con,$username); $password = stripslashes($_REQUEST['password']); $password = mysqli_real_escape_string($con,$password); //Checking is user existing in the database or not $query = "SELECT * FROM `users` WHERE username='$username' and password='".md5($password)."'"; $result = mysqli_query($con,$query) or die(mysql_error()); $rows = mysqli_num_rows($result); if($rows==1){ $_SESSION['username'] = $username; // Redirect user to index.php header("Location: index.php"); }else{ echo "<div class='form'> <h3>نام کاربری یا رمز عبور شما اشتباه است</h3> <br/>برای ورود روی <a href='login.php'>اینجا</a> کلیک کنید</div>"; } }else{ ?> <div class="form"> <h3>ورود</h1> <form action="" method="post" name="login"> <input type="text" name="username" placeholder="نام کاربری" required /> <input type="password" name="password" placeholder="رمز عبور" required /> <input name="submit" type="submit" value="ورود" /> </form> <p style="font-size: 12px;">هنوز عضو سایت نشده اید؟<a href='registration.php'>هم اکنون ثبت نام کنید</a></p> </div> <?php } ?> </body> </html>
در این فرم ابتدا تگ های HTML را ایجاد کرده و سپس با استفاده از دستور require فایل db.php را فراخوانی می کنیم. از تابع session_start() جهت ثبت و ذخیره سشن (نشست) کاربران بهره می بریم. در نهایت با تابع isset بررسی می کنیم که آیا نام کاربری از طریق فرم ورود کاربران در php ارسال شده است یا خیر؟ اگر ارسال شده بود، نام کاربری و رمز عبور را دریافت کرده و در نهایت با استفاده از یک کوئری، کاربر موردنظر را پیدا می کنیم.
توجه داشته باشید که برای دستیابی به رمز عبور از تابع md5 جهت رمزگذاری استفاده می کنیم. اگر نام کاربری یافت شد مقدار username را در نشست (سشن) کاربر ذخیره کرده و در نهایت کاربر را به صفحه index.php که در ادامه خواهیم ساخت، با استفاده از تابع header، ریدایرکت (هدایت) خواهیم کرد.
در صورتیکه تمام کدهای فوق را به درستی وارد کرده باشید، با ورود به آدرس yoursite.com/login.php با تصویر زیر روبه رو خواهید شد:
برای اتصال به پایگاه داده برای سیستم ورود و عضویت کاربران در PHP کافیست کدهای زیرا درون فایل db.php در مسیر روت (اصلی) پوشه خود وارد کنید:
<?php // Enter your Host, username, password, database below. // I left password empty because i do not set password on localhost. $con = mysqli_connect("localhost","root","","register"); // Check connection if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); } ?>
همانطور که در جریان هستید از دستور mysqli_connect برای اتصال به پایگاه داده استفاده می شود که این تابع دارای چهار آرگومان اصلی است. آرگومان اول نام هاست، آرگومان دوم نام کاربری دیتابیس، آرگومان سوم رمز عبور دیتابیس و آرگومان چهارم نام پایگاه داده را دریافت می کند.
در نهایت با استفاده از دستور mysqli_connect_errno بررسی خواهیم کرد که آیا اتصال برقرار است یا خیر. درصورتیکه اتصال برقرار نبود پیامی را به کاربر نمایش می دهیم.
برای احراز هویت کاربران PHP یک صفحه به نام auth.php درون فولدر روت ایجاد می کنیم و سپس کدهای زیر را درون آن قرار می دهیم:
<?php session_start(); if(!isset($_SESSION["username"])){ header("Location: login.php"); exit(); } ?>
در این مجموعه کد بررسی می کنیم که آیا سشن username دریافت شده است یا خیر؟ اگر دریافت نشده بود کاربر را به صفحه login.php هدایت می کنیم.
کاربرانی که پس از احراز هویت با موفقیت وارد سایت شده باشند با یک صفحه ایندکس روبه رو خواهند شد. که در این صفحه لینک صفحه داشبورد و خروج کاربران قرار دارد. بنابراین کدهای زیر را درون یک فایل به نام index.php ذخیره می کنیم:
<?php //include auth.php file on all secure pages include("auth.php"); ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>صفحه داشبورد</title> <link rel="stylesheet" href="css/style.css" /> </head> <body dir="rtl"> <div class="form"> <p>خوش آمدی <?php echo $_SESSION['username']; ?>!</p> <p>This is secure area.</p> <p><a href="dashboard.php">داشبورد</a></p> <a href="logout.php">خروج</a> </div> </body> </html>
برای ایجاد صفحه داشبورد کاربران کافیست کدهای زیر را درون یک فایل به نام dashboard.php هم رده با سایر فایل ها قرار دهید:
<?php require('db.php'); include("auth.php"); ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>صفحه محافظت شده داشبورد</title> <link rel="stylesheet" href="css/style.css" /> </head> <body dir="rtl"> <div class="form"> <p>داشبورد</p> <p>این صفحه تنها برای کاربرانی که عضو سایت شده اند در دسترس است.</p> <p><a href="index.php">صفحه اصلی</a></p> <a href="logout.php">خروج</a> </div> </body> </html>
طبیعتا هر کاربری که وارد یک سایت می شود باید بتواند به ساده ترین شکل ممکن حساب کاربری خود را خارج کند. برای این کار یک گزینه به نام خروج در صفحه داشبورد قرار داده ایم که با کلیک روی آن یک فایل به نام logout.php فراخوانی می شود که وظیفه ی آن حذف سشن ها و هدایت کردن کاربر به صفحه ورود است.
<?php session_start(); // Destroying All Sessions if(session_destroy()) { // Redirecting To Home Page header("Location: login.php"); } ?>
بسیار عالی عزیزان، به شما تبریک می گوییم در یک مقاله ی کاملا خلاصه و مفید توانستیم نحوه ی آموزش ساخت فرم ورود و عضویت با زبان PHP و پایگاه داده MySQL را خدمت شما عزیزان ارائه دهیم. امیدواریم این آموزش مورد توجه شما واقع شده باشد.
در ضمن دوستان برای دریافت فایل های این پروژه به ادامه ی این پست در پایین صفحه مراجعه نمایید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.