المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : اصنع سكربت التسجيل بنفسك مع ربطه بي sql


عبسي الحمديني
2011-11-07, 01:58 AM
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته

في هذا الدرس راح نتعلم صنع سكربت بسيط لتسجيل الدخول
وراح نصنع ثلاث ملفات :

* main_login.php
* checklogin.php
* login_success.php


وراح نتبع خمس خطوات فقط :

* نصنع قاعدة بيانات بإسم test و جدول بإسم members
* نصنع الملف main_login.php
* نصنع الملف checklogin.php
* نصنع الملف login_success.php
* واخيرا نصنع الملف logout.php




اولًا : نصنع جدول members في قاعدة البيانات ويكون تحت اسم القاعدة test على سبيل المثال
http://forum.montadaphp.net/imgcache/4336.imgcache


CREATE TABLE `membres` (
`id` int(4) NOT NULL auto_increment,
`username` varchar(65) NOT NULL,
`password` varchar(65) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;

INSERT INTO `membres` VALUES (1, 'php', 'php');


اتمنى منكم إنشاء قاعدة البيانات بشكل يدوي للإستفاده


ثانيًا: نصنع ملف main_login.php وهو ملف لفورم تسجيل الدخول


http://forum.montadaphp.net/imgcache/4337.imgcache

<table width="300" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC"><tr>
<form name="form1" method="post" action="checklogin.php"><td>
<table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF" dir="rtl"><tr>
<td colspan="3"><strong>تسجيل الدخول</strong></td></tr>
<tr>
<td width="74">اسم المستخدم</td>
<td width="4">:</td>
<td width="204"><input name="myusername" type="text" id="myusername"></td>
</tr>
<tr>
<td>كلمة المرور</td>
<td>:</td>
<td><input name="mypassword" type="text" id="mypassword"></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><input type="submit" name="Submit" value="دخول"></td>
</tr>
</table>
</td>
</form>
</tr>
</table>


اهم شي في هذا الكود هو اسم التكتس اريا + اكشن الفورم

اكشن الفورم هو (checklogin.php) كما في الكود التالي
<form name="form1" method="post" action="checklogin.php">

اسم التكتس اريا لإسم المستخدم هو (myusername) كما في الكود التالي

<input name="myusername" type="text" id="myusername">



اسم التكتس اريا لكلمة المرور هي (mypassword) كما في الكود التالي


<input name="mypassword" type="password" id="mypassword">


ثالثًا: نصنع ملف checklogin.php وهو ملف للتحقق من اسم المستخدم والباسبورد

كود الملف هو

<?php
$host="localhost"; // Host name
$username=""; // Mysql username
$password=""; // Mysql password
$db_name="test"; // Database name
$tbl_name="members"; // Table name
// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
// username and password sent from form
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];
// To protect MySQL injection (more detail about MySQL injection)
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);
$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'";
$result=mysql_query($sql);
// Mysql_num_row is counting table row
$count=mysql_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row
if($count==1)**
// Register $myusername, $mypassword and redirect to file "login_success.php"
session_register("myusername");
session_register("mypassword");
header("location:login_success.php");
}
else **
echo "خطأ في اسم المستخدم او كلمة المرور";
}
?>



:: شرح الكود ::

$host="localhost"; // Host name
$username="root"; // Mysql username
$password="root"; // Mysql password
$db_name="test"; // Database name
$tbl_name="members"; // Table name

// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");


عمل الكود هو الاتصال بقاعدة البيانات بإمكان وضع ملف الاتصال في ملف مستقل عن الكود
على سبيل المثال نضع الكود السابق في ملف config.php
ونكتب في الملف السابق بدل هالكود

include 'config.php';

الكود التالي
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];

عرفنا المتغيرات لإستقبال اليوزر والباسبورد من الفورم

$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);


هنا عملنا حمايه بسيطه لسد ثغرة MySQL injection

$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'";
$result=mysql_query($sql);

في هذا الكود عملنا اتصال بجدول members داخل قاعدة بيانات test

$count=mysql_num_rows($result);
if($count==1)**

Mysql_num_row هنا فائدتها يحسب الصفوف في الجدول
ويجب ان تكون نتيجة $myusername و $mypassword من نفس صف الجدول



session_register("myusername");
session_register("mypassword");
header("location:login_success.php");
}
else **
echo "خطأ في اسم المستخدم او كلمة المرور";
}


الكود يعطي امر بتسجيل $myusername و $mypassword ثم بعدها ينتقل لصفحة
login_success.php إذا كان اليوزر والباسبورد صحيحه
او يكتب (خطأ في اسم المستخدم او كلمة المرور) إذا كانت غير متطابقة



رابعًا: نصنع ملف login_success.php

كود الملف هو

<?
session_start();
if(!session_is_registered(myusername))**
header("location:main_login.php");
}
?>

<html>
<body>
تم تسجيل الدخول بنجاح
</body>
</html>


هالكود يشيك إذا الجلسة لم تسجل يرجعنا لـ main_login.php
وإذا تم تسجيلها يكتب لنا (تم تسجيل الدخول بنجاح)


اخيرًا: نصنع ملف تسجيل الخروج logout.php

كود الملف هو

<?
session_start();
session_destroy();
?>