آموزش و سورس ساخت صفحه ورود و خروج در PHP
آموزش و سورس ساخت صفحه ورود و خروج در PHP
در این پست نحوه ساخت صفحه ورود کاربر به سایت ( login ) و خروج از سایت ( logout )را در PHP برایتان قرار داده ایم.
در این پست می خواهیم صفحه طراحی کنیم که کاربری که در سایت ثبت نام کرده بتواند وارد سایت شود بنابراین باید ابتدا فرم ثبت نام را طراحی کنیم و سپس چک کنیم که اگر کاربری با این مشخصات در سیستم وجود داشت بتواند وارد سایت شود.
در پست های قبلی ثبت نام در سایت را با اعتبارسنجی های مختلف در سایت قرار داده بودیم.
یکی از صفحات مهم دیگر در سایت صفحه ورود به سایت می باشد به علت اینکه شما می توانید یک سری دسترسی را تعیین کنید که فقط کاربران سایت داشته باشند برای مثال می توانید دانلود مطالب سایت را فقط به کاربرانی که عضو سایت شما هستند بدهید.
در این آموزش ما از یک قالب ساده استفاده کردیم که شما می توانید کدهای بخش ثبت نام را در قالب خودتان کپی کنید همچنین برای ظاهر فرم نیز از چند خط کد Css استفاده کردیم تا ظاهر فرم زیباتر به نظر برسد.
کدهای بخش ورود به سایت به صورت زیر می باشد.
<?php session_start(); ?> <?php include("function.php"); ?> <html> <head> <meta charset="UTF-8"> <title>ورود به سایت</title> <link href="style.css" type="text/css" rel="stylesheet"> </head> <body> <?php if (isset($_POST['submit'])) { $username = $_POST["txtUsername"]; $password = $_POST["txtPassword"]; if ($username != "" && $password != "") { $found_user = attempt_login($username, $password); if ($found_user) { $_SESSION["username"] = $found_user["UserName"]; $_SESSION["user_id"] = $found_user["UserId"]; header("Location: profile.php"); } else { $_SESSION["Message"] = "نام کاربری یا رمز عبور شما صحیح نمی باشد"; } } else { $_SESSION["Message"] = "فیلدهای ستاره دار باید تکمیل شوند"; } } ?> <div class="wrapper"> <div class="header"> <a href="http://www.iranganj.ir"><img style="margin-top: 20px;margin-right: 30px;" src="logo.png"></a> </div> <div class="main"> <div class="sidebar"> <ul> <li> <a href="register.php">ثبت نام</a> </li> <li> <a href="login.php">ورود</a> </li> </ul> </div> <div class="content"> <fieldset> <legend>برای ورود به سایت نام کاربری و رمزعبور خود را وارد کنید</legend> <?php if (isset($_SESSION["Message"])) { $output = "<div class=\"error-box\">"; $output .= $_SESSION["Message"]; $output .= "</div>"; $_SESSION["Message"] = null; echo $output; } ?> <form method="post" action="login.php" name="form1"> <div> <div>نام کاربری خود را وارد کنید<span class="required ">*</span> </div> <input type="text" name="txtUsername" placeholder="نام کاربری خود را وارد کنید"> </div> <div> <div>پسورد <span class="required ">*</span></div> <div> <input type="password" name="txtPassword" placeholder="رمز عبور خود را وارد کنید"> </div> </div> <div> <div> <input type="submit" name="submit" style="width: 150px;height: 30px;font-size: 15px;" value="ورود"> </div> </div> </form> </fieldset> </div> </div> <div class="footer"> <h4 style="text-align: center;padding: 20px;"><a href="http://www.iranganj.ir">تمامی حقوق متعلق با سایت ایران گنج می باشد</a></h4> </div> </div> </body> </html>
در خط اول از دستور session_start() استفاده کردیم اگر بخواهیم از سشن در برنامه خودمان استفاده کنیم باید اولین کد ما این دستور باشد. دلیل استفاده از سشن در این برنامه این است که ما پیغام هایی را که موقع کلیک بر روی دکمه ورود مشاهده می شود را چاپ کنیم.
در کدهای بخش فرم ما از 2 تکست باکس استفاده کردیم. همچنین همچنین از تگ span استفاده کردیم و جلوی هر کدام از تکست باکس ها علامت ستاره را قرار داده ایم و همچنین از کلاس required استفاده کردیم تا رنگ ستاره ها قرمز شود. همچنین در داخل هر تکست باکس از مشخصه placeholder آن استفاده کردیم و متنی را در آن قرار دادیم. که کاربر آن متن را مشاهده می کند و تا زمانی که چیزی در کادر متن وارد نکرده آن متن نمایش داده می شود.
بعد از این که فرم ورود را ساختیم نوبت به این می رسد که نام کاربری و رمزعبور را از کاربر دریافت کرده و آن را چک کنیم.
برای این کار ابتدا با استفاده از دستور if ای که نوشتیم چک می کنیم که آیا کاربر بر روی دکمه ورود کلیک کرده یا نه. اگر کلیک کرده باشد نام کاربری و رمزعبور را دریافت می کنیم سپس چک می کنیم که فیلدها خالی نباشند اگر خالی نبودند تابع attempt_login را فراخوانی می کنیم وگرنه پیغام فیلدهای ستاره دار باید تکمیل شوند را چاپ می کنیم .که کدهای آن به صورت زیر می باشد.
function attempt_login($username, $password) { $connection = mysqli_connect("localhost", "root", "", "training"); if (mysqli_connect_errno()) { die("database connection failed: " . mysqli_connect_error() . "(" . mysqli_connect_errno() . ")" ); } $query = "SELECT * "; $query .= "FROM users "; $query .= "WHERE UserName='{$username}' AND Password='{$password}' "; $user_set = mysqli_query($connection, $query); if (!$user_set) { die("database query failed"); } if ($user = mysqli_fetch_assoc($user_set)) { return $user; } else { return null; } }
در تابع attempt_login ابتدا به دیتابیس وصل می شویم کدهای این بخش را قبلا توضیح دادیم. سپس یک دستور select نوشته ایم که نام کاربری و رمزعبور را چک می کند اگر در دیتابیس چیزی وجود داشته باشد آن سطر را برمی گرداند و گرنه null را بر می گرداند.
بعد از فراخوانی تابع با دستور if چک می کنیم که آیا چیزی برگردانده شده یا نه اگر مقداری توسط تابع برگردانده شده بود یعنی نام کاربری و رمزعبور درست می باشد در این صورت نام کاربری و id کاربر را داخل سشن قرار می دهیم و کاربر ره به صفحه پروفایل هدایت می کنیم.
و اگر تابع مقداری برنگردانده بود در داخل سشن عبارت نام کاربری یا رمز عبور شما اشتباه می باشد.
بعد از ساخت پایگاه داده باید کدهای مربوط به بخش ثبت نام را بنویسیم که کدهای آن به صورت زیر می باشد.
اگر توجه کنید کاربر اگر نام صفحه profile.php را در مروگر تایپ کند آن صفحه را لود می کند ما باید کاری انجام دهیم که کاربر زمانی که لاگین کرد بتواند وارد صفحه پروفایل شود.
برای این کار از دو تابع استفاده می کنیم که کدهای آن به شکل زیر می باشد.
function logged_in_user() { return isset($_SESSION["username"]); } function confirm_logged_in_user() { if (!logged_in_user()) { header("Location: login.php"); } }
با استفاده از تابع confirm_logged_in_user این کار را انجام می دهیم در ابن تابع یک if نوشته ایم که تابعی را صدا می زند در تابع logged_in_user چک می کند که سشن کاربر وجود دارد یا نه اگر وجو داشت صفحه profile.php اجرا می شود و گرنه کاربر به صفحه لاگین هدایت می شود تا وارد سایت شود.
تابع confirm_logged_in_user در ابتدای صفحه profile فراخوانی شده است.
در صفحه پروفایل نیز یک لینک برای خروج از پروفایل قرار دادیم که این لینک صفحه logout.php را فراخوانی می کند که کدهای آن به صورت زیر می باشد.
<?php session_start(); $_SESSION["username"] = null; $_SESSION["user_id"] = null; header("Location: login.php"); ?>
در این صفحه ابتدا سشن را شروع کرده ایم سپس تمامی سشن ها را برابر null قرار دادیم و در آخر نیز کاربر را به صفحه login هدایت کرده ایم.
توجه : فایل sql پایگاه داده نیز ضمیمه برنامه می باشد.
نظر / سوال