بسم الله الرحمن الرحيم
السلام عليكم اخواني
هذا هو الموضوع الاول لي في قسم لغة PHP وليس الاخير بإذن الله
بعد تتبعي للقسم ولمواضيعه وجدت ان المواضيع المطروحة في لغة PHP قليلة جدا وتحتاج الى نشاط وتفاعل اكثر، فإذا كنت تملك علما لما لا تشاركه مع غيرك ليتعلموا منك وتتعلم منهم وتعم الفائدة على الجميع
اليوم احببت ان اطرح احد المواضيع الشائعه والجميلة وهي كيفية جعل الزائر ان يقوم بالتسجيل بموقعك وكيف ترسل له بريد الكتروني ليقوم بتفعيل حسابه ، سأقوم بتفصيل الخطوات مع الصور وبعد ذلك يمكنني الاجابة على الاسئلة التي تطرحونها والتعليقات
لنبدأ بالخطوات
الصفحات اللازمة:
1. signup.php
2. signup_ac.php
3. confirmation.php
4. config.php
قواعد البيانات:
1. temp_members_db
2. registered_members
المتطلبات:
- عند القيام بالتسجيل، هنالك مجموعه عشوائية من اكواد التفعيل.
- حفظ معلومات المستخدمين واكواد التفعيل في الجدول "temp_members_db"، بحيث انها افتراضية حتى يقوم المستخدم بتفعيل المعلومات بواسطة كود التفعيل وبعدها نقوم بنقل معلومات المستخدم الى الجدول "registered_members"
- بعد انهاء عملية التسجيل وحفظ البيانات في الجدول الافتراضي "temp_members_db" ارسال بريد الكتروني للمستخدم لتفعيل الحساب
- عندما يقوم المستخدم بالنقر على الوصلة المرسلة للبريد الالكتروني، يتم تفعيل الحساب (نقل الملفات من "temp_members_db" الى "registered_members" وحذف البيانات من "temp_members_db")
الخطوة الاولى : اضافة الجداول "temp_members_db" و "registered_members"

CREATE TABLE `temp_members_db` ( `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=latin1; 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=latin1 AUTO_INCREMENT=1 ;
الخطوة الثانية: بناء صفحة تسجيل الدخول signup.php
<table width="350" border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <td><form name="form1" method="post" action="signup_ac.php"> <table width="100%" border="0" cellspacing="4" cellpadding="0"> <tr> <td colspan="3"><strong>Sign up</strong></td> </tr> <tr> <td width="76">Name</td> <td width="3">:</td> <td width="305"><input name="name" type="text" id="name" size="30"></td> </tr> <tr> <td>E-mail</td> <td>:</td> <td><input name="email" type="text" id="email" size="30"></td> </tr> <tr> <td>password</td> <td>:</td> <td><input name="password" type="password" id="password" size="30"></td> </tr> <tr> <td>Country</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="Submit"> <input type="reset" name="Reset" value="Reset"></td> </tr> </table> </form></td> </tr> </table>
الخطوة الثالثة : اضافة المعلومات الى قاعدة البيانات signup_ac.php
في هذه الخطوة :
- اكواد تفعيل عشوائية
- اضافة المعلومات وكود التفعيل الى قاعدة البيانات
- ارسال بريد الكتروني للمستخدم ووصلة تفعيل الحساب

<?php
include('config.php');
// اسم الجدول
$tbl_name=temp_members_db;
// كود تفعيل عشوائي
$confirm_code=md5(uniqid(rand()));
// البيانات المرسلة من الفورم
$name=$_POST['name'];
$email=$_POST['email'];
$country=$_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){
// ---------------- SEND MAIL FORM ----------------
// البريد الالكتروني المرسل له ...
$to=$email;
// عنوان الرسالة المرسلة
$subject="كود التفعيل المستخدم";
// المرسل
$header="from: اسمك او اسم الموقع <بريدك الاكتروني المستخدم للأرسال>";
// نص الرسالة المرسلة
$message="وصلة التفعيل الخاصة بك\r\n";
$message.="اضغط على الوصلة التالية ليتم تفعيل حسابك\r\n";
$message.="http://www.yourweb.com/confirmation.php?passkey=$confirm_code";
//كود الارسال
$sentmail = mail($to,$subject,$message,$header);
}
// اذا لم يتم العثور على البريد الالكتروني في قاعدة البيانات
else {
echo "لم يتم ايجاد بريدك الالكتروني في قاعدة البيانات الخاصة بنا";
}
// اذا تم ارسال كود التفعيل بنجاح
if($sentmail){
echo "تم ارسال كود التفعيل لبريدك الالكتروني بنجاح, يرجى فتح الرسالة والضغط على الوصلة المرسلة لتفعيل حسابك";
}
else {
echo "لقد فشلت عملية ارسال كود التفعيل لبريدك الالكتروني";
}
?>الخطوة الرابعه: تفعيل الحساب confirmation.php
عندما يقوم المستخدم بتفقد بريده الالكتروني سيجد رسالة تحتوي على كود التفعيل
في هذه الخطوة:
- التأكد من passkey
- اذا كان الpasskey صحيحا يتم نقل البيانات الى قاعدة بيانات المستخدمين المفعلين
- حذف كود التفعيل من قاعدة البيانات

<?php
include('config.php');
// كود التفعيل الذي سيتم استقباله من البريد الالكتروني
$passkey=$_GET['passkey'];
$tbl_name1="temp_members_db";
// احضار المعلومات من قاعدة البيانات في حال وجود كود التفعيل
$sql1="SELECT * FROM $tbl_name1 WHERE confirm_code ='$passkey'";
$result1=mysql_query($sql1);
// في حال توفر المعلومات
if($result1){
// ايجاد عدد الصفوف التي تحتوي على نفس كود التفعيل
$count=mysql_num_rows($result1);
// في حالة ايجاد البيانات في القاعدة وعدد الصفوف صحيح مساويا للعدد 1، اي بمعنى لا يوجد بريد الكتروني اخر يستخدم نفس الكود
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
$host="localhost"; // اسم السيرفر
$username=""; // مستخدم السيرفر
$password=""; // كلمة مرور المستخدم
$db_name=""; // اسم قاعدة البيانات
//الاتصال بقاعدة البيانات
mysql_connect("$host", "$username", "$password")or die("لا يمكن الاتصال بقاعدة البيانات");
mysql_select_db("$db_name")or die("لم يتم الوصول لقاعدة البيانات المحددة");
?>مع اطيب الامنيات ;)