سلام دوستان،
امروز قسمت سوم آموزش ساخت خبرنامه رو پيگيري ميکنيم.
امروز قسمت Login مدير به بخش مديريت رو انجام ميديم.
ابتدا يه مرور روي جدول admin ميکنيم ...
کد:
CREATE TABLE `admin` (
`user` varchar(32) NOT NULL default '',
`pass` varchar(32) NOT NULL default '',
PRIMARY KEY (`user`)
) TYPE=MyISAM;
خوب اين جدول مربوط به کاربر (هاي) ما است که با اون وارد سيستم ميشيم و خبر نامه ارسال ميکنيم و اعضا رو مديريت ميکنيم.
براي تست فعلا از توي phpMyAdmin يه دونه کاربر توش insert ميکنيم بعد برنامش رو مي نويسيم.
کد:
INSERT INTO `admin` VALUES ('a', '202cb962ac59075b964b07152d234b70');
خوب حالا بريم سراغ ساخت صفحه Login :
من پيشنهاد ميکنم يه فولدر جداگانه براي admin درست کنيم و فايل هاي مخصوص مدير رو توي اون بريزيم.
فايل login.html:
اين فايل فرم ورود رو به ما نشون ميده و محتواي اون اينه:
کد:
<form method="POST" action="login.php">
<p>User name:
<input type="text" name="UserName" >
<p>
Password: <input type="password" name="Password" >
<p>
<input type="submit" name="BtnSubmit" value="Login">
</form>
فايل login.php :
اين فايل کار تعيين اعتبار کاربر رو انجام ميده.
اول از همه چون از جلسات ميخواهيم استفاده کنيم پس تابع مربوط به راه اندازي session رو فراخوني ميکنيم.
کد:
session_start();
[/code]
بعد نام کاربري و پسورد را از ورودي ميگيريم و توي دوتا متغير ميريزيم:
کد:
$User = $_POST['UserName'];
$Pass = $_POST['Password'];
چون ما کلمه عبور رو به صورت رمزي برگشت ناپذير توي DataBase ذخيره ميکنيم پس چيزي که از کاربر مي گيريم رو هم به همون صورت به رمز در ميآريم تا بتونيم مطابقت اون رو بررسي کنيم.
کد:
$Pass = md5($Pass);
البته الگوريتم هاي ديگري هم هستند ولي اين بيشتر مرسومه ... البته توي برنامه هاي بزرگ که بعد خواهيد نوشت از اين الگوريتم به صورتي که بالا گفته شد استفاده نميکنيد بلکه با رشته ها بازي ميکنيم و يه الگوريتم من در آوردي با استفاده از md5 و ... مي سازيم تا امنيت بيشتري داشته باشه.
حالا Query مربوط به پيدا کردن کاربر در جدول را مينويسيم تا ببينيم که اصلا همچين کاربري وجود داره يا نه ...
کد:
$sql = "SELECT `pass`
FROM `admin`
WHERE `user` = '$User'";
حالا با ديتابيس ارتباط برقرار ميکنيم :
کد:
include('../config.php');
connect();
اون فايل config.php همون فايلي هست که توي مراحل قبل يه تابع توش نوشتيم براي ارتباط با DataBase.
حالا اجراي query:
کد:
$Result = mysql_query($sql);
حالا شرط بررسي اين که پسورد درسته يا نه و انجام کارهاي مربوط به لاگين:
کد:
if(mysql_num_rows($Result) == 1 && mysql_result($Result, 0) == $Pass)
{
$_SESSION['UserName'] = $User;
$ClientString = $_SERVER['HTTP_USER_AGENT'] . $_SERVER['REMOTE_ADDR'];
$_SESSION['ClientStr'] = md5($ClientString);
header("Location: admin.php");
} else {
die('The specified username and/or password is incorrect!');
}
توضيح:
توي عبارت شرطي اول گفتيم که بررسي شود که اصلا query ما يک نتيجه داشته يا نه اگه داشت حالا قسمت دوم شرط که ميگيم پسوردي که از فرم گرفتيم با پسورد موجود در ديتابيس يکي هست يا نه.
حالا اگه شرط درست بود وارد بدنه شرط مي شويم:
توي خط اولش نام کاربري رو توي يه session ريختيم چون توي صفحات ديگه به دردمون ميخوره.
در خط دوم و سوم ما مشخصات مرورگر، سيستم عامل و ... رو به همراه IP کاربر رو توي يه session ريختيم و براي اين که کمتر جا بگيره و امنيت بيشتر بشه اون رو با md5 کد کرديم. که توي صفحات مديريت اون رو چک ميکنيم تا کسي نتونه با session تقلبي login کنه.
در خط بعد هم که يه هدر ميفرستيم و کاربر رو به صفحه مديريت (admin.php) که در جلسات بعد خواهيم ساخت هدايت ميکنيم.
در زير کد کامل صفحه login.php را مي بينيد:
کد:
<?php
//Starting the session...
session_start();
//Get The data from form.
$User = $_POST['UserName'];
$Pass = $_POST['Password'];
//Hashing the password...
$Pass = md5($Pass);
//Checking the user and pass...
$sql = "SELECT `pass`
FROM `admin`
WHERE `user` = '$User'";
//Connecting to db...
include('../config.php');
connect();
$Result = mysql_query($sql);
if(mysql_num_rows($Result) == 1 && mysql_result($Result, 0) == $Pass)
{
$_SESSION['UserName'] = $User;
$ClientString = $_SERVER['HTTP_USER_AGENT'] . $_SERVER['REMOTE_ADDR'];
$_SESSION['ClientStr'] = md5($ClientString);
header("Location: admin.php");
} else {
die('The specified username and/or password is incorrect!');
}
?>
موفق باشيد.