منو اصلی

درگاه ورود کاربران
لینک سایت های مفید
تقویم
<    «  ارديبهشت 1391  »    >
شيدسچپج
 1
2345678
9101112131415
16171819202122
23242526272829
3031 
آرشیو
امار سایت
آمار مطالب:
  يک ساعت پيش: 0
  امروز: 0
  اين ماه: 7
  مجموع مطالب: 398
  کل نظرات: 309



آمار بازديد:
  بازديد امروز: 4191
  بازديد ديروز: 3512
  مجموع بازديدها: 2495701



آمار کاربران:
  يک ساعت پيش: 0
  امروز: 9
  اين ماه: 347
  مجموع کابران: 7265
  بن شدگان: 2

آخرين عضو:


javad_gh1370

 


کاربران آنلاین:

رباطها آنلاین: Crawl Bot, Google Bot

در حال حاضر 0 کاربر, 2 رباط, 2 میهمان و در مجموع 4 نفر در سایت حضور دارند.
همکاران سایت

--------------------
نظرسنجی

دوست دارید نرم افزار رو روی چه سیستم عاملی اجرا کنید ؟

Xp
Vista
Seven
Apple
Windows android
تازه های سایت
بخش های پربازدید
اطلاعات سایت
حمایت  فارسی دی بی

 

http://www.farsidb.com/farsidb.gif

برای حمایت از فارسی دی بی کد بالا را در سایت و یا وبلاگ خود قرار دهید با تشکر

رتبه و اطلاعات سایت   

   http://www.farsidb.com/alex.jpg

 

آموزش طراحي سيستم ثبت نام و ورود:گام سوم



گام سوم: ساخت سيستم ورود به سايت

اميدوارم تا اينجا آموزش ها خوب و مفيد واقع شده باشند. از استادان تقاضا دارم لطفاً اگر سوالي و انتقادي دارند به من پيام خصوصي بدهيد خوشحال خواهم شد که انتقاد استادان را براي هر چه بهتر شدن کارم در اموزشم استفاده کنم.

همانطور که از عنوان گام هم معلوم است امروز مي خواهم ساخت لاگين با سشن را آموزش بدهم البته بعضي ها پرسيدند که آيا راهي به غير از استفاده از سشن هست؟ متاسفانه بايد بگويم من هنوز راهي جديد نديدم و فعلاً همين سشن بهترين راه است.

خوب اول فرم HTML آن را مي سازيم.
کد HTML:



Login



Username:


Password:








اينجاي کار تقريباً مانند فرم ثبت نام است در بالاي کد HTML تگ PHP را باز مي کنيم.
و کد زير را مي نويسيم تمام توضيحات را در کد بصورت کامنت نوشتم:


if (isset($_POST['submitted'])){ //check mikone bebine form ersal shode ya na?
$dbc= mysqli_connect('localhost','root','','test');
$error = array(); //arraye khali baraye error misazim
if (!empty($_POST['username'])){ //check mikone bebine username por shode ast ya na?
$u = $_POST['username']; //agar por shode bood dakhele moteghayer rikhte shavad
}else{ //agar por nashode bood...
$error[] = 'You forgot to enter your username'; //payame ro dar arraye error beriz
}
if (!empty($_POST['pass'])){ //check mikone bebine password por shode ast ya na?
$p = $_POST['pass']; //agar por shode bood dakhele moteghayer rikhte shavad
}else{ //agar por nashode bood...
$error[] = 'You forgot to enter your password'; //payame ro dar arraye error beriz
}
if (empty($error)){
$q = "SELECT user_id,status FROM users WHERE username='$u' AND password=md5('$p') AND status!=3 ";
$r = @mysqli_query($dbc,$q); //Query ra ejra mikonad

if (mysqli_num_rows($r)==1){//agar karbar vojood dasht hatman faghat 1karbar ham vojood dare pas bayad tedade record ha mosaviye 1 bashad
$row = mysqli_fetch_assoc($r); //maghadir record ra dar moteghayere row khahad rikht
if ($row['status']==0){
echo $msg = "

Your Account is inactive, First of all reactive your account.

"; //namayeshe error message.
}else{
$_SESSION['userid'] = $row['user_id']; //user_id ro dar session vared mikonim
$_SESSION['level'] = $row['status']; //status ro dar session vared mikonim
header ('location: profile.php');
}
}else{
echo $msg = "

There is no such this user

"; //namayeshe error message.
}
}else{
echo $msg = "

An uknown system error is occured. if this error persist please contact admin.

"; //namayeshe error message.
}
}

?>


در بين کدها شايد متوجه سشن ها شده باشيد. يکي از سشن ها level نام داشت آن را براي اين گذاشتم که کاربران را سطح بندي کنم و سطح مانند زير است:
سطح 0 = کاربر هنوز ايميل خود را فعال ننموده است (بنابراين پيامي با اين مضمون نمايش داده خواهد شد)
سطح 1 = کاربر ايميل خود را فعال کرده (کاربر فعال است)
سطح 2 = کاربر مدير سايت است (مدير سايت)
سطح 3 = کاربر اکانت خود را حذف کرده است

حالا مي خواهيم سشن ها را بررسي کنيم، براي اينکار من از يک تابع استفاده مي کنم و براي اينکه در تمام صفحات استفاده اش کنم در يک فايل جداگانه اين تابع را خواهم نوشت اسم اين فايل را بصورت فرضي functions.php گذاشتم.
حالا در فايل functions.php کد زير را مي نويسم:




سپس اين کدها را در صفحات سايتمان استفاده مي کنيم. فعلاً مي خواهم براي تست در صفحه ورود به سيستم قرارش بدهم. براي وارد کردن تابع در از تابع include استفاده مي کنيم.
include('functions.php');
و در آخر تابع checkLogin() را فراخواني مي کنم.
بنابراين بر اساس اين تابع اگر سطح کاربر 1 بود به صفحه profile.php و اگر 2 بود به صفحه admin.php منتقل خواهد شد.

انشاء الله که اين آموزش هم به درد شما عزيزان خورده باشد. در گام هاي بعدي سعي مي کنم بحث امنيت و تابع نويسي و حتي ساخت کلاس را توضيح بدهم.

login.php :
کد HTML:
[left]
<?php
include('functions.php');
checkLogin();
if (isset($_POST['submitted'])){ //check mikone bebine form ersal shode ya na?
$dbc= mysqli_connect('localhost','root','','test');
$error = array(); //arraye khali baraye error misazim
if (!empty($_POST['username'])){ //check mikone bebine username por shode ast ya na?
$u = $_POST['username']; //agar por shode bood dakhele moteghayer rikhte shavad
}else{ //agar por nashode bood...
$error[] = 'You forgot to enter your username'; //payame ro dar arraye error beriz
}
if (!empty($_POST['pass'])){ //check mikone bebine password por shode ast ya na?
$p = $_POST['pass']; //agar por shode bood dakhele moteghayer rikhte shavad
}else{ //agar por nashode bood...
$error[] = 'You forgot to enter your password'; //payame ro dar arraye error beriz
}
if (empty($error)){
$q = "SELECT user_id,status FROM users WHERE username='$u' AND password=md5('$p') AND status!=3 ";
$r = @mysqli_query($dbc,$q); //Query ra ejra mikonad

if (mysqli_num_rows($r)==1){//agar karbar vojood dasht hatman faghat 1karbar ham vojood dare pas bayad tedade record ha mosaviye 1 bashad
$row = mysqli_fetch_assoc($r); //maghadir record ra dar moteghayere row khahad rikht
if ($row['status']==0){
echo $msg = "

Your Account is inactive, First of all reactive your account.

"; //namayeshe error message.
}else{
$_SESSION['userid'] = $row['user_id']; //user_id ro dar session vared mikonim
$_SESSION['level'] = $row['status']; //status ro dar session vared mikonim
header ('location: profile.php');
}
}else{
echo $msg = "

There is no such this user

"; //namayeshe error message.
}
}else{
echo $msg = "

An uknown system error is occured. if this error persist please contact admin.

"; //namayeshe error message.
}
}

?>




Login



Username:


Password:








functions.php :
کد HTML:



سوالات متداول:

1- چرا سطح 3 را بعنوان حذف کاربر قرار داديد؟
حفظ اطلاعات بسيار مهم است و بنابراين سعي کنيد آنها را براي هميشه نگه داريد و فقط وضعيت آنها را به يک عدد تغيير دهيد که معناي حذف را براي شما داشته باشد.

2- کار @ قبل از mysql_query چيست؟
اگر خطايي در اجراي کوئري ديتابيس رخ دهد ديگر به کاربر نمايش داده نمي شود و اينگونه به راحتي مي توانيد خطا را بدست بگيريد.

بازدیدها: 358

http://www.farsidb.com/forum.gif


اطلاعات
 
براي ارسال نظر، بايد در سايت عضو شويد.

 
 

پشتیبانی شده توسط سرور باران