بكسل - Powered by vBulletin


افاتار الكاتب
الصورة الرمزية mr graphics
mr graphics
مؤسس موقع بكسل (رحمه الله)
الدولة : -
الإهتمامات : -
الوظيفة : -
صورة الدرس الرمزية
معلومات الدرس
تقييم الدرس : 2 تقييمات , بـمعدل 4.50
نظام تسجيل و التفعيل عن طريق بريد العضو
السلام عليكم ...

في هذا الدرس بإذن الله سنتعلم إنشاء نظام تسجيل و تفعيل العضوية عن طريق بريد المسجل ...

في هذا الدرس سنحتاج لإنشاء أربعة ملفات و جدولين ...

الملفات الأربعة ...
  1. signup.php
  2. signup_ac.php
  3. confirmation.php
  4. config.php
الجدولين ...
  1. temp_members
  2. registered_members

ماذا سنفعل ؟
1- عند تسجيل العضو ، يحصل على كود تفعيل عضويته عبر بريده الإلكتروني الذي سجل به ...
2- نضع بياناته و كود التفعيل في جدول temp_members ، و عند التفعيل نعيد وضع بياناته في جدول registered_members ( بدون كود التفعيل طبعا ) ، و نحذف البيانات من الجدول المؤقت temp_members ...
3- و بالطبع لن يستقبل المسجل الرسالة إلا إذا كان البريد صحيحا ، و هذا جيدا للتأكد من صلاحية البريد الإلكتروني للمستخدم ...
4- لن يصبح المسجل مفعلا و بعبارة أخرى عضوا حقيقيا إلا إذا ضغط على كود التفعيل الخاص به ...



الجدول الأول ... temp_members

كود PHP:
CREATE TABLE `temp_members` (
`
confirm_codevarchar(65NOT NULL default '',
`
namevarchar(65NOT NULL default '',
`
emailvarchar(65NOT NULL default '',
`
passwordvarchar(15NOT NULL default '',
`
countryvarchar(65NOT NULL default ''
ENGINE=MyISAM DEFAULT CHARSET=cp1256
الجدول الثاني ... registered_members


كود PHP:
 CREATE TABLE `registered_members` (
`
idint(4NOT NULL auto_increment,
`
namevarchar(65NOT NULL default '',
`
emailvarchar(65NOT NULL default '',
`
passwordvarchar(65NOT NULL default '',
`
countryvarchar(65NOT NULL default '',
PRIMARY KEY (`id`)
ENGINE=MyISAM DEFAULT CHARSET=cp1256 AUTO_INCREMENT=

ملف 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>&nbsp;</td>
<
td>&nbsp;</td>
<
td><input type="submit" name="Submit" value="سجل"> &nbsp;
<
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
 mail.rar (الحجم 2Kb , المشاهدات 86)
01:12 AM 10-14-2009 بواسطة diamond1 مشكووووووووور
جزاك الله خيرا