در این جلسه از سری آموزش های php با پردیس وردپرس به آموزش ایجاد فرم ورود و صفحه کاربری می پردازیم. سیستم ورود کاربران به سایت از آموزش های بسیار کاربردی تحت وب است. اگر یادتان باشد در جلسات قبل در مورد Session ها صحبت کردیم. سشنها در واقع متغیرهایی هستند که به منظور نگهداری اطلاعات شخصی کاربران بر روی سرورهای وب به کار گرفته میشوند. در صورتی که از این ویژگی استفاده نشود، وبسرور نمیتواند تشخیص دهد که کدام کاربر به سمت سرور درخواست ارسال کرده است.
در این جلسهی آموزشی قصد دارید تا با استفاده از Session ها در پیاچپی، یک سیستم کاربری ساده که شامل فرم ورود کاربران عضو است را بر اساس درخواستهای کاربر ایجاد کنیم. به منظور شروع یک سشن باید از کد زیر استفاده کنیم:
<?php session_start(); // Do Something ?>
برای ذخیرهی مقادیر دلخواه در سشنها میتوانیم از کدی مثل زیر بهره ببریم:
<?php session_start(); // Store Session Data $_SESSION['login_user']= $username; // Initializing Session with value of PHP Variable
برای خواندن اطلاعات ذخیره شده در سشنها نیز باید از کدی مثل کد زیر استفاده کرد:
<?php session_start(); // Store Session Data $_SESSION['login_user']= $username; // Initializing Session with value of PHP Variable echo $_SESSION['login_user'];
برای خالی کردن اطلاعات ذخیره شده در یک سشن نیز میتوان از کد زیر استفاده کرد:
<?php session_destroy(); // Is Used To Destroy All Sessions //Or if(isset($_SESSION['id'])) unset($_SESSION['id']); //Is Used To Destroy Specified Session
در مثال ما، یک فرم ورود خواهیم داشت که کاربر باید فیلدهای آن را پر کرده و سپس روی دکمهی ورود کلیک کند. سپس یک سشن ایجاد شده که در صورتی که کاربر اطلاعات ورود را به درستی وارد کرده باشد، دادههایی در این سشن ذخیره شده و به وی اجازه مشاهده صفحهی مخصوص کاربران عضو داده میشود.
مثل همیشه پیش از شروع کار، برنامهی Xampp را اجرا کرده و سپس در پوشهی htdocs یک پوشهی دلخواه برای این پروژه بسازید. در ادامه کد کامل فایلهای مورد نیاز را مشاهده میکنید و توضیح در مورد این کدها نیز در ادامه آورده شده است. شما باید تک تک فایلهایی که در ادامه آورده شده را ساخته در این فایلها کدهای مربوط را بنویسید.
فایل index.php
کد این فایل در واقع بیشتر HTML است و شامل یک فرم برای ورود اطلاعات کاربر است. این فرم دارای دو فیلد با نام username و password و یک دکمه به نام submit است. فیلد اول برای نام کاربری و فیلد دوم برای رمز عبور است. در ادامه کد این فایل را مشاهده میکنید:
<?php include('login.php'); // Includes Login Script if(isset($_SESSION['login_user'])){ header("location: profile.php"); } ?> <!DOCTYPE html> <html> <head> <title>Login Form in PHP with Session</title> <link href="style.css" rel="stylesheet" type="text/css"> </head> <body> <div id="main"> <h1>PHP Login - pardiswp</h1> <div id="login"> <h2>Login Form</h2> <form action="" method="post"> <label>UserName :</label> <input id="name" name="username" placeholder="username" type="text"> <label>Password :</label> <input id="password" name="password" placeholder="**********" type="password"> <input name="submit" type="submit" value=" Login "> <span><?php echo $error; ?></span> </form> </div> </div> </body> </html>
همانطور که در کد بالا مشاهده میکنید ابتدا با دستور include فایل login.php که در مرحلهی بعد آن را میسازیم به صفحهی index.php اضافه شده است. سپس با دستور شرطی if بررسی میکنیم که آیا سشنی به نام login_user قبلا ست شده یا خیر. اگر مقدار این سشن خالی نباشد با دستور header، کاربر را به صفحهای به نام profile.php منتقل میکنیم. در غیر این صورت کد اچتیامال که در ادامهی فایل نوشته شده اجرا خواهد شد و فرم ورود به کاربر نمایش داده میشود. دقت کنید که خاصیت action این فرم login.php است و این یعنی اطلاعات فرم یاد شده به فایلی به نام login.php ارسال خواهند شد.
در کد بالا خط echo $error باعث میشود تا مقدار متغیر error$ که در فایل login.php مقدار دهی میشود چاپ شود.
فایل login.php
این فایل شامل اسکریپتهای پیاچپی لازم برای بررسی ورود کاربر است. کد این فایل نیز به صورت زیر خواهد بود:
<?php session_start(); // Starting Session $error=''; // Variable To Store Error Message if (isset($_POST['submit'])) { if (empty($_POST['username']) || empty($_POST['password'])) { $error = "Username or Password is invalid"; } else { // Define $username and $password $username=$_POST['username']; $password=$_POST['password']; // Establishing Connection with Server by passing server_name, user_id and password as a parameter $connection = mysql_connect("localhost", "root", ""); // To protect MySQL injection for Security purpose $username = stripslashes($username); $password = stripslashes($password); $username = mysql_real_escape_string($username); $password = mysql_real_escape_string($password); // Selecting Database $db = mysql_select_db("company", $connection); // SQL query to fetch information of registerd users and finds user match. $query = mysql_query("select * from login where password='$password' AND username='$username'", $connection); $rows = mysql_num_rows($query); if ($rows == 1) { $_SESSION['login_user']=$username; // Initializing Session header("location: profile.php"); // Redirecting To Other Page } else { $error = "Username or Password is invalid"; } mysql_close($connection); // Closing Connection } } ?>
در این فایل نیز ابتدا با دستور session_start سشن را آغاز میکنیم تا بتوانیم از آن در این فایل استفاده کنیم. دقت کنید که در هر فایلی که قصد کار کردن با سشنها را داشته باشید ترجیحا در خطوط اولیه صفحه باید این دستور را بنویسیم.
سپس در این فایل یک متغیر به نام error$ ایجاد کردهایم و مقدار آن را خالی گذاشتهایم. این متغیر برای نگهداری خطاهای احتمالی که طی فرایند ورود کاربر ایجاد میشوند مورد استفاده واقع میشوند.
در خط بعدی با استفاده از دستور isset همانطور که در بخش فرمها به شما آموزش داده بودیم بررسی میکنیم که آیا کاربر اطلاعات مورد نیاز را وارد کرده یا خیر. اگر فیلدهای نام کاربری و رمزعبور خالی باشند، مقدار متغیر error برابر با Username or Password is invalid خواهد شد. در غیر این صورت ادامهی کد یعنی کدهای بعد از else اجرا خواهند شد. حال اگر کاربر نام کاربری و رمزعبور را وارد کرده باشد، مقادیر وارد شده توسط وی در دو متغیر به نام username و password ذخیره میشوند.
در جلسه ی بعد به بانک اطلاعاتی که اطلاعات کاربران در آن ذخیره شده می پردازیم.
دیدگاه خود را بنویسید