RightClick

امروز 19 شهريور 1389 10:51

همه زمانها UTC + 3:30 ساعت هستند




ارسال مبحث جديد پاسخ به مبحث [ 8 پست ] 
نويسندهپيغام
 موضوع پست: آموزش php (ساخت خبر نامه قسمت سه)
پستارسال شده در: 14 شهريور 1385 12:27 
آفلاين
کاربر حرفه ای
کاربر حرفه ای
نماد کاربر

تاريخ عضويت: 29 تير 1384 20:03
پست ها : 1004
محل سکونت: شيراز
دريافتي: 15 تشكر
رسيده: 36 تشكر
سلام دوستان،
امروز قسمت سوم آموزش ساخت خبرنامه رو پيگيري ميکنيم.
امروز قسمت 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!');
}
?>


موفق باشيد.

_________________
به جان زنده دلان، سعدیا، ملک وجود --- نیرزد آن که دلی را ز خود بیازاری


بالا
 مشخصات  
 
 موضوع پست:
پستارسال شده در: 14 شهريور 1385 13:08 
آفلاين
داره خودمونی میشه
داره خودمونی میشه
نماد کاربر

تاريخ عضويت: 31 خرداد 1385 16:27
پست ها : 69
محل سکونت: تهران
دريافتي: 0 تشكر
رسيده: 0 تشكر
آقا مجتبي بازم مثل هميشه عالي بود فقط يه چيزي اين قسمت زير را نفهميدم كه چرا گذاشته ايد ؟
کد:
   $ClientString = $_SERVER['HTTP_USER_AGENT'] . $_SERVER['REMOTE_ADDR'];
   $_SESSION['ClientStr'] = md5($ClientString);

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


بالا
 مشخصات  
 
 موضوع پست:
پستارسال شده در: 14 شهريور 1385 16:43 
آفلاين
کاربر فعال انجمن
کاربر فعال انجمن
نماد کاربر

تاريخ عضويت: 6 تير 1385 8:11
پست ها : 770
محل سکونت: اصفهان
دريافتي: 0 تشكر
رسيده: 5 تشكر
دستتون درد نكنه
داره كم كم برنامه پيشرفت ميكنه :wink:

_________________
چيزي رو كه دوست داري بدست بيار ... وگرنه مجبوري چيزي رو كه بدست مياري دوست داشته باشي
Chonoo.Com


بالا
 مشخصات  
 
 موضوع پست:
پستارسال شده در: 16 شهريور 1385 8:00 
آفلاين
کاربر حرفه ای
کاربر حرفه ای
نماد کاربر

تاريخ عضويت: 29 تير 1384 20:03
پست ها : 1004
محل سکونت: شيراز
دريافتي: 15 تشكر
رسيده: 36 تشكر
davoodsystem نوشته است:
آقا مجتبي بازم مثل هميشه عالي بود فقط يه چيزي اين قسمت زير را نفهميدم كه چرا گذاشته ايد ؟
کد:
   $ClientString = $_SERVER['HTTP_USER_AGENT'] . $_SERVER['REMOTE_ADDR'];
   $_SESSION['ClientStr'] = md5($ClientString);

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


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

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

آقا مهدي ممنون از لطفتون.

_________________
به جان زنده دلان، سعدیا، ملک وجود --- نیرزد آن که دلی را ز خود بیازاری


بالا
 مشخصات  
 
 موضوع پست: يك عالمه تشكر و يك خواهش
پستارسال شده در: 4 دي 1385 9:50 
آفلاين
داره خودمونی میشه
داره خودمونی میشه
نماد کاربر

تاريخ عضويت: 3 دي 1385 20:49
پست ها : 27
محل سکونت: ري باستان
دريافتي: 0 تشكر
رسيده: 0 تشكر
سلام آقا مجتبي

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

باز هم متشكرم استاد عزيز :kuss: :kuss:


بالا
 مشخصات  
 
 موضوع پست:
پستارسال شده در: 5 دي 1385 9:56 
آفلاين
کاربر حرفه ای
کاربر حرفه ای
نماد کاربر

تاريخ عضويت: 29 تير 1384 20:03
پست ها : 1004
محل سکونت: شيراز
دريافتي: 15 تشكر
رسيده: 36 تشكر
سلام،
آقا اگه بدوني چقدر سرم شلوغه و نميرسم به سايت ...
چشم توي اولين فرصت ادامش ميدم ...
از توجه و لطفتون هم ممنونم.

موفق باشيد. :wink:

_________________
به جان زنده دلان، سعدیا، ملک وجود --- نیرزد آن که دلی را ز خود بیازاری


بالا
 مشخصات  
 
 موضوع پست:
پستارسال شده در: 27 آذر 1386 0:34 
آفلاين
تازه وارد
تازه وارد

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

_________________
<a href="loveptals.blogfa.com">گلبرگ های عشق</a>


بالا
 مشخصات  
 
 موضوع پست:
پستارسال شده در: 30 آذر 1386 6:44 
آفلاين
کاربر فعال انجمن
کاربر فعال انجمن
نماد کاربر

تاريخ عضويت: 6 تير 1385 8:11
پست ها : 770
محل سکونت: اصفهان
دريافتي: 0 تشكر
رسيده: 5 تشكر
همه ي تاپيک ها خوانده مي شود، پس پست اضافي ارسال نکنيد... :arrow:

_________________
چيزي رو كه دوست داري بدست بيار ... وگرنه مجبوري چيزي رو كه بدست مياري دوست داشته باشي
Chonoo.Com


بالا
 مشخصات  
 
نمايش پست ها از پيشين:  مرتب سازي بر اساس  
ارسال مبحث جديد پاسخ به مبحث [ 8 پست ] 

همه زمانها UTC + 3:30 ساعت هستند


چه کسي حاضر است ؟

کاربران حاضر در اين انجمن: بدون کاربران عضو شده و 1 مهمان


شما نمي توانيد مبحث جديدي در اين انجمن ايجاد کنيد
شما نمي توانيد به مباحث در اين انجمن پاسخ دهيد
شما نمي توانيد پست هاي خود را در اين انجمن ويرايش کنيد
شما نمي توانيد پست هاي خود را در اين انجمن حذف کنيد
شما نمي توانيد فايل هاي پيوست در اين انجمن ارسال کنيد

جستجو براي:
پرش به:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Persian Translation By : www.Maghsad.com