السلام عليكم ...
في هذا الدرس بإذن الله سنتعلم إنشاء نظام تسجيل و تفعيل العضوية عن طريق بريد المسجل ...
في هذا الدرس سنحتاج لإنشاء أربعة ملفات و جدولين ...
الملفات الأربعة ...- signup.php
- signup_ac.php
- confirmation.php
- config.php
الجدولين ...- temp_members
- registered_members
ماذا سنفعل ؟
1- عند تسجيل العضو ، يحصل على كود تفعيل عضويته عبر بريده الإلكتروني الذي سجل به ...
2- نضع بياناته و كود التفعيل في جدول temp_members ، و عند التفعيل نعيد وضع بياناته في جدول registered_members ( بدون كود التفعيل طبعا ) ، و نحذف البيانات من الجدول المؤقت temp_members ...
3- و بالطبع لن يستقبل المسجل الرسالة إلا إذا كان البريد صحيحا ، و هذا جيدا للتأكد من صلاحية البريد الإلكتروني للمستخدم ...
4- لن يصبح المسجل مفعلا و بعبارة أخرى عضوا حقيقيا إلا إذا ضغط على كود التفعيل الخاص به ...
الجدول الأول ... temp_members
كود PHP:
CREATE TABLE `temp_members` (
`confirm_code` varchar(65) NOT NULL default '',
`name` varchar(65) NOT NULL default '',
`email` varchar(65) NOT NULL default '',
`password` varchar(15) NOT NULL default '',
`country` varchar(65) NOT NULL default ''
) ENGINE=MyISAM DEFAULT CHARSET=cp1256;
الجدول الثاني ... registered_members
كود PHP:
CREATE TABLE `registered_members` (
`id` int(4) NOT NULL auto_increment,
`name` varchar(65) NOT NULL default '',
`email` varchar(65) NOT NULL default '',
`password` varchar(65) NOT NULL default '',
`country` varchar(65) NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1256 AUTO_INCREMENT=1 ;
ملف signup.php ...
هذا الملف بسيط نقوم بعمل فورم للتسجيل يتكون من الاسم و البريد كلمة المرور و البلد ( بالطبع هذه الحقول للشرح و يمكنك الإضافة و الحذف كما
تشاء ) ، و ترسل المعلومات إلى الصفحة signup_ac ...
كود PHP:
<html dir="rtl">
<head>
<title>التسجيل</title>
<style type="text/css"/>
body {
font-family : Tahoma ;
}
</style>
</head>
<body>
<table width="380" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td><form name="signup" method="post" action="signup_ac.php">
<table width="100%" border="0" cellspacing="4" cellpadding="0">
<tr>
<td colspan="3"><strong>التسجيل</strong></td>
</tr>
<tr>
<td width="106">الاسم</td>
<td width="3">:</td>
<td width="305"><input name="name" type="text" id="name" size="30"></td>
</tr>
<tr>
<td>البريد الإلكتروني</td>
<td>:</td>
<td><input name="email" type="text" id="email" size="30"></td>
</tr>
<tr>
<td>كلمة المرور</td>
<td>:</td>
<td><input name="password" type="password" id="password" size="30"></td>
</tr>
<tr>
<td>البلد</td>
<td>:</td>
<td><input name="country" type="text" id="country" size="30"></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td><input type="submit" name="Submit" value="سجل">
<input type="reset" name="Reset" value="مسح"></td>
</tr>
</table>
</form></td>
</tr>
</table>
</body>
</html>
ملف signup_ac.php ...
في هذه المرحلة ...
1- ننشأ كود التفعيل ...
2- نضيف بيانات المستخدم و كود التفعيل إلى الجدول المؤقت ...
3- نرسل الرسالة برابط التفعيل للمستخدم ...
بعد إذن أخي محمود سوف نستخدم
دالتك 
...
الملف ثم بعده الشرح ...
كود PHP:
<?
include('config.php');
$tbl_name=temp_members;
function rand_string($num_chars)
{
$chars = array("1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z");
$string = array_rand($chars, $num_chars);
foreach($string as $s)
{
$ret .= $chars[$s];
}
return $ret;
}
$confirm_code = rand_string(20);
$name=trim($_POST['name']);
$email=trim($_POST['email']);
$country=trim($_POST['country']);
$sql="INSERT INTO $tbl_name(confirm_code, name, email, password, country)VALUES('$confirm_code', '$name', '$email', '$password',
'$country')";
$result=mysql_query($sql);
if($result){
$to=$email;
$subject="كود تفعيل عضويتك";
$header="from: By aMINE <g.amine.dz@gmail.com>";
$message="رابط تفعيل عضويتك \r\n";
$message.="إضغط على هذا الرابط ، ليتم تفعيل عضويتك \r\n";
$message.="http://www.YOURWEBSITE.info/confirmation.php?passkey=$confirm_code";
$sentmail = mail($to,$subject,$message,$header);
}
else {
echo "للأسف ، لم يتم تسجيلك ... حاول مجددا";
}
if($sentmail){
echo "لقد تم إرسال رابط تفعيل عضويتك إلى بريدك الإلكتروني";
}
else {
echo "للأسف ، لم يتم إرسال رابط التفعيل إلى بريدك الإلكتروني";
}
?>
في هذا السطر ، قمنا بإستدعاء ملف الإتصال بقاعدة البيانات config.php ...
كود PHP:
include('config.php');
تحديد الجدول المؤقت لبيانات المسجلين ...
كود PHP:
$tbl_name=temp_members;
و بإستخدام دالة الأخ محمود قمنا بعمل كود التفعيل ، الذي يتكون من 20 حرف و رقم

...
كود PHP:
function rand_string($num_chars)
{
$chars = array("1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", à"s", "t", "u", "v", "w", "x", "y", "z");
$string = array_rand($chars, $num_chars);
foreach($string as $s)
{
$ret .= $chars[$s];
}
return $ret;
}
$confirm_code = rand_string(20);
أعدنا تعريف البيانات المرسلة عبر الـ POST بإضافة أخي Bruce لإزالة الفراغات من البداية و النهاية ...
كود PHP:
$name=trim($_POST['name']);
$email=trim($_POST['email']);
$country=trim($_POST['country']);
نقوم بإدخال البيانات في الجدول المؤقت ...
كود PHP:
$sql="INSERT INTO $tbl_name(confirm_code, name, email, password, country)VALUES('$confirm_code', '$name', '$email', '$password',
'$country')";
$result=mysql_query($sql);
إذا تم الإدخال ، يتم تجهيز الرسالة ، طبعا يمكنك تغيير محتويات الرسالة و تفاصيلها كما تريد ، و يجب عليك تغيير رابط التفعيل ليتناسب مع رابط صفحةconfirmation.php ...
كود PHP:
if($result){
$to=$email;
$subject="كود تفعيل عضويتك";
$header="from: By aMINE <g.amine.dz@gmail.com>";
$message="رابط تفعيل عضويتك \r\n";
$message.="إضغط على هذا الرابط ، ليتم تفعيل عضويتك \r\n";
$message.="http://www.YOURWEBSITE.info/confirmation.php?passkey=$confirm_code";
$sentmail = mail($to,$subject,$message,$header);
}
إذا لم يتم الإدخال ، تظهر رسالة الإخفاق ...
كود PHP:
else {
echo "للأسف ، لم يتم تسجيلك ... حاول مجددا";
}
و هنا نقوم بالإرسال ، فإن نجح تظهر رسالة النجاح و في حالة الإخفاق تظهر رسالة الإخفاق ...
كود PHP:
if($sentmail){
echo "لقد تم إرسال رابط تفعيل عضويتك إلى بريدك الإلكتروني";
}
else {
echo "للأسف ، لم يتم إرسال رابط التفعيل إلى بريدك الإلكتروني";
}
ملف confirmation.php ...
الآن ، و عند فتح المستخدم لبريده سيجد رسالة التفعيل و بها رابط لصفحة confirmation.php مضافا إليه كود التفعيل ...
في هذه المرحلة ...
1- نتأكد من كود التفعيل ...
2- إذا وجد كود التفعيل في جدول temp_members ، ينقل كل حقول المستخدم إلى جدول
registred_members ...

3- حذف البيانات رفقة كود التفعيل من الجدول المؤقت temp_members ...
تابع الملف ، ثم الشرح ...
كود PHP:
<?
include('config.php');
$passkey=$_GET['passkey'];
$tbl_name1="temp_members";
$sql1="SELECT * FROM $tbl_name1 WHERE confirm_code ='$passkey'";
$result1=mysql_query($sql1);
if($result1){
$count=mysql_num_rows($result1);
if($count==1){
$rows=mysql_fetch_array($result1);
$name=$rows['name'];
$email=$rows['email'];
$password=$rows['password'];
$country=$rows['country'];
$tbl_name2="registered_members";
$sql2="INSERT INTO $tbl_name2(name, email, password, country)VALUES('$name', '$email', '$password', '$country')";
$result2=mysql_query($sql2);
}
else {
echo "كود التفعيل خاطئ";
}
if($result2){
echo "تم تفعيل عضويتك بنجاح";
$sql3="DELETE FROM $tbl_name1 WHERE confirm_code = '$passkey'";
$result3=mysql_query($sql3);
}
}
?>
كالعادة ، إستدعاء ملف config.php ...
كود PHP:
include('config.php');
إعادة تعريف كود التفعيل المرسل عبر الـ GET ...
كود PHP:
$passkey=$_GET['passkey'];
تحديد جدول البيانات المؤقتة ...
كود PHP:
$tbl_name1="temp_members";
إستخراج بيانات العضو بحيث أن شرط الإستخراج هو كود التفعيل ...
كود PHP:
$sql1="SELECT * FROM $tbl_name1 WHERE confirm_code ='$passkey'";
$result1=mysql_query($sql1);
إذا وجد نتائج ، يعيد تعريف بيانات العضو في متغيرات جديدة ...
كود PHP:
if($result1){
$count=mysql_num_rows($result1);
if($count==1){
$rows=mysql_fetch_array($result1);
$name=$rows['name'];
$email=$rows['email'];
$password=$rows['password'];
$country=$rows['country'];
تعريف جدول الأعضاء المفعلين ...
كود PHP:
$tbl_name2="registered_members";
ينقل بيانات المسجل من الجدول المؤقت إلى جدول الأعضاء المفعلين ...
كود PHP:
$sql2="INSERT INTO $tbl_name2(name, email, password, country)VALUES('$name', '$email', '$password', '$country')";
$result2=mysql_query($sql2);
إذا كان كود التفعيل خاطئ تظهر رسالة الإخفاق ...
كود PHP:
else {
echo "كود التفعيل خاطئ";
أما إذا تمت الإضافة إلى جدول الأعضاء المفعلين يظهر رسالة النجاح ...
كود PHP:
if($result2){
echo "تم تفعيل عضويتك بنجاح";
و يتم حذف البيانات رفقة كود التفعيل من الجدول المؤقت temp_members ...
كود PHP:
$sql3="DELETE FROM $tbl_name1 WHERE confirm_code = '$passkey'";
$result3=mysql_query($sql3);
ملف config.php ...
بالطبع هذا أسهل ملف ...
كود PHP:
<?
$host="localhost"; // المستضيف
$username="root"; // اسم المستخدم
$password=""; // كلمة المرور
$db_name="db"; // قاعدة البيانات
// الإتصال بالخادم و تحديد قاعدة البيانات
mysql_connect("$host", "$username", "$password")or die("لا يمكن الإتصال بالخادم");
mysql_select_db("$db_name")or die("لا يمكن تحديد قاعدة البيانات");
?>
إنتهى ! ... لتحميل ملفات الدرس
بالمرفقات (
ملاحظة تمت إضافة الترميز العربي )... و للتجربة من
هنا ...
الموقع الأصلي للموضوع ...
=============================
http://www.montadaphp.net/showthread.php?t=785