دريافت Firefoxشما از نسخه ساده رايت کليک استفاده مي نماييد. براي ديدن نسخه پيشرفته رايت کليک، در صورت استفاده از يک مرورگر استاندارد، [ اينجا ]کليک نماييد.

آخرين عناوين ارسالي به انجمن ها
لينک هاي دوستان
به دليل حجم زياد فقط تعدادي به صورت تصادفي نمايش داده شده اند.
آموزش php (ساخت خبر نامه قسمت سه)
بازديد ها: 7955, پاسخ ها: 7
آموزش php (ساخت خبر نامه قسمت سه)
توسط mojtaba در 14 شهريور 1385 - 12:27 ، پست ها: 1007
سلام دوستان،
امروز قسمت سوم آموزش ساخت خبرنامه رو پيگيري ميکنيم.
امروز قسمت 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!');
}
?>


موفق باشيد.
[ تبليغات ] سیستم دامنه رایگاناین سیستم به شما این امکان را می دهد که به کاربران وب، دامنه رایگان ارایه دهید. در واقع کاربران بوسیله این سیستم می توانند برای وب سایت ها...
توسط davoodsystem در 14 شهريور 1385 - 13:08 ، پست ها: 69
آقا مجتبي بازم مثل هميشه عالي بود فقط يه چيزي اين قسمت زير را نفهميدم كه چرا گذاشته ايد ؟
کد: انتخاب همه
   $ClientString = $_SERVER['HTTP_USER_AGENT'] . $_SERVER['REMOTE_ADDR'];
   $_SESSION['ClientStr'] = md5($ClientString);

چون من هميشه واسه Login همه چيز بالا به جز قسمتي كه بالا كدش و گذاشتم را مي نوشتم و مي خواستم بدونم كه اين قسمت چه كمكي مي كنه ؟
توسط mahdi در 14 شهريور 1385 - 16:43 ، پست ها: 770
دستتون درد نكنه
داره كم كم برنامه پيشرفت ميكنه :wink:
توسط mojtaba در 16 شهريور 1385 - 8:00 ، پست ها: 1007
davoodsystem نوشته:آقا مجتبي بازم مثل هميشه عالي بود فقط يه چيزي اين قسمت زير را نفهميدم كه چرا گذاشته ايد ؟
کد: انتخاب همه
   $ClientString = $_SERVER['HTTP_USER_AGENT'] . $_SERVER['REMOTE_ADDR'];
   $_SESSION['ClientStr'] = md5($ClientString);

چون من هميشه واسه Login همه چيز بالا به جز قسمتي كه بالا كدش و گذاشتم را مي نوشتم و مي خواستم بدونم كه اين قسمت چه كمكي مي كنه ؟


سلام اين براي اينه كه از دزديدن Session يا همون session تقلبي جلوگيري كنيم توي جلسه بعد مفصل توضيح ميدم.

دستتون درد نكنه
داره كم كم برنامه پيشرفت ميكنه

آقا مهدي ممنون از لطفتون.
يك عالمه تشكر و يك خواهش
توسط ali712k در 4 دي 1385 - 9:50 ، پست ها: 27
سلام آقا مجتبي

من ديروز دنبال همچين مطلبي مي گشتم كه اين مطلب بسيار عالي را پيدا كردم
:idea:
واقعا عاليه
:kuss:
اگه ميشه يه لطفي بكنيد و ادامه مطلب را زودتر اد كنيد
:oops: :oops: :oops:
چون من هفته بعد يه پروه بايد به پي اچ پي تحويل استاد مي دم و پي اچ پي را هم دارم از آموزش َما يادميگيرم و لنگ مطلب شما هستم :? :( :? :( :?

باز هم متشكرم استاد عزيز :kuss: :kuss:
توسط mojtaba در 5 دي 1385 - 9:56 ، پست ها: 1007
سلام،
آقا اگه بدوني چقدر سرم شلوغه و نميرسم به سايت ...
چشم توي اولين فرصت ادامش ميدم ...
از توجه و لطفتون هم ممنونم.

موفق باشيد. :wink:
توسط SecExpert در 27 آذر 1386 - 0:34 ، پست ها: 5
سلام دوستان من نياز شديد به گذاشتن پسورد روي يك صفحه از سايت دارم(ترجيحا با php، با سرچ به اينجا رسيدم اما راستش چيز زيادي نفهميدم مي شه براي كسي كه اصلا html و php بلد نيست گام به گام توضيح بديد كه بايد اين كدها رو كجا قرار داد چند تا فايل بايد ساخت؟كدوم كد رو توي كدوم فايل ريخت و فايل ها رو چطوري بايد به هم ربط داد؟دقيقا" کجاي اين اين کدها رو بايد تغيير داد؟در ضمن من هاست رايگان دارم به MySQL و phpMyadmin هم دسترسي دارم البته توي phpmyadmin در قسمت create new databases زده : No Priviledges (البته هيچ کدوم رو بلد نيستم :cry: )
ممنون :D
راستش اين پست رو توي يك تاپيك مشابه هم دادم اما گفتم شايد ديده نشه
توسط mahdi در 30 آذر 1386 - 6:44 ، پست ها: 770
همه ي تاپيک ها خوانده مي شود، پس پست اضافي ارسال نکنيد... :arrow:

صفحه اصليرايت کليکانجمن هاپروژه هاCopyright © 2005-2009 RightClick.ir All rights reserved.