الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ارجو شرح فكرة كيف يتم ارسال رسالة تفعيل في نموذج singup

بدأه dr.php5 في 16 يونيو 2011 · 11 رد · 2,051 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

الحمد لله قمت ببرمجة نموذج تسجيل singup كامل

ولكن ينقصه خدمة ارسال رسالة تفعيل

ارجو شرح الفكرة علما اني متعلم الاساسيات

وهذا كود التسجيل كتبته بنفسي

<?php
// ==> programming by : hussam alzahabi
session_start();
include ("config.php");
echo ("<meta content='text/html; charset=windows-1256' http-equiv='Content-Type' />");
echo ("<link href='style/style.css' movie='screen' rel='stylesheet' />");

/* جدول قاعدة  \==>  ~hosting~ <==|
CREATE TABLE `users` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`username` VARCHAR( 60 ) NOT NULL ,
`useremail` VARCHAR( 60 ) NOT NULL ,
`userpass` VARCHAR 60 ) NOT NULL ,
`zipcode` VARCHAR( 60 ) NOT NULL ,
`userphone` VARCHAR( 60 ) NOT NULL
) ENGINE = MYISAM ;
*/

$date = date($_GET['date']);
$un = mysql_real_escape_string(strip_tags($_POST['username']));
$up = mysql_real_escape_string(strip_tags(md5(md5($_POST['userpass']))));
$ue = mysql_real_escape_string(strip_tags($_POST['useremail']));
$z = mysql_real_escape_string(strip_tags($_POST['zipcode']));
$uph = mysql_real_escape_string(strip_tags($_POST['userphone']));

if (isset($_POST['user']) and $_POST['user'] == 'do'){
  if(empty($un)){
  echo ("<center><div class='error'><b>
  يرجى ادخال اسم العميل
  </b></div></center>");
}elseif(empty($ue)){
  echo ("
  <center><div class='error'>
  <b>
   يرجى ادخال ايميلك
  </b>
  </div></center>
  ");
}elseif (strlen($up) <= 6 or empty($up)){
  echo ("<center><div class='error'>
  <b>
     كلمة المرور لاتقل عن 6 احرف
  </b>
  </div></center>");
}elseif(empty($z)){
  echo ("<center><b><div class='error'>يرجى ادخال الرمز البريدي</div></b></center>");
}elseif(empty($uph)){
  echo ("<center><div class='error'><b>يرجى ادخال رقم التلفون ولو كان غير صحيح </b></div></center>");
}elseif($_SESSION['code'] != $_POST['captcha'] || empty($_SESSION['code'])){
  echo ("<center>
  <div class='error'>
  <b>
  الرمز الذي ادخلته لا يطابق الذي في الصورة
  </b>
  </div>
  </center>");
}else{
 $insert = mysql_query("insert into users(username,useremail,userpass,zipcode,userphone,date)
  values('$un','$ue','$up','$z','$uph','$date')") or die ("<b>mysql error</b>");

      echo ("<center><div class='true'>
      <b>
      تمت اضافة المعلومات الى قاعدة البيانات
      </b>
      </div></center>");
   echo ("<br />");
}
}
echo ("
<center><div class='h1'>
<form action='".$_SERVER['PHP_SELF']."' method='post'>
<table cellpadding='5' border='0' cellspacing='0' width='50%' align='center'>
<tr>
    <td align='center' colspan='3'><h1>تسجيل عميل جديد</h1></td>
</tr>
<tr>
   <td align='center'><input type='text' name='username' class='text' /></td>
   <td>:</td>
   <td>اسم العميل</td>
</tr>
<tr>
   <td align='center'><input type='text' name='useremail' class='text' /></td>
   <td>:</td>
   <td>ايميل العميل</td>
</tr>
<tr>
   <td align='center'><input type='password' name='userpass' class='text' /></td>
   <td>:</td>
   <td>كلمة مرور العميل</td>
</tr>
<tr>
   <td align='center'><input type='text' name='zipcode' class='text' /></td>
   <td>:</td>
   <td>الرمز البريدي</td>
</tr>
<tr>
   <td align='center'><input type='text' name='userphone' class='text' /></td>
   <td>:</td>
   <td>رقم الجوال</td>
</tr>
<tr>
   <td align='center'><input type='text' name='captcha' size='6' class='text' /> <img src='captcha.php'  /></td>
   <td>:</td>
   <td>ادخل الرمز الذي في الصورة</td>
</tr>
<tr>
   <td colspan='3' align='center'><input type='submit' class='botton' value='سجل البيانات' />  <input type='reset' class='botton' value='مسح البيانات' c/> </td>
</tr>
</table>
<input type='hidden' name='user' value='do' />
</form></div></center>");

mysql_close($connectdb);
?>

وشكرا

نسخة AGF العربية

النسخة قيد التطوير

رابط النسخة التجريبية

موقع النسخة الرسمي

شعار النسخة :

http://golden-forum.tk/AGF/styles/images/logo.png

<?php
echo ("I love php code ");
print(" Golden Forum Arab");
?>
#2

الفكره في نظري والله اعلم كالتالي :

اولا عندما يسجل الشخص في الموقع تتخزن معلوماته في الداتا بيز وتصلة رساله الى ايميله فيها رابط صفحة التفعيل..... .. طبعا لازم نسوي عمود في جدول المستخدمين باسم active مثلا او اي اسم لنرمز به الى التفعيل

ثانيا الرابط مكون من عنوان صفحة التفعيل ايضا يكون فيه مخزن الرقم التسلسلي id يعني مثلا اسم الصفحة active.php تجي انت ترسل للعضو الذي سجل ولنفرض عنوانه التسلسلي 5 فيصبح الرابط كالتالي : active.php?id=5

ثالثا مكونات صفحة التفعيل هي في الحقيقه عباره انها تاخذ الرقم التسلسلي للعضو ثم تبحث عنه في الداتا بيز وتعدل حقل التفيعل ....لانه حينما يسجل الشخص يكون نجعله اساسا غير مفعل فلما يدخل صفحة التفيعل نغير قيمة الحقل ونخليه مفعل

هذي عباره عن فكره بسيطه والافكار كثيرة

بالتوفيق

#3

شكرا بس اريد توضيح من خبير وارجو وضع كود مبســــــط

طيب كيف بيرسل الايميل عبر php

−1

نسخة AGF العربية

النسخة قيد التطوير

رابط النسخة التجريبية

موقع النسخة الرسمي

شعار النسخة :

http://golden-forum.tk/AGF/styles/images/logo.png

<?php
echo ("I love php code ");
print(" Golden Forum Arab");
?>
#4

لقد وجدت الحل شكرا لكم

والحمد لله اكتشفته بنفسي

وهذه الطريقة للخبراء فقط طبعا يفهونها

اولا نقوم باستخدام دالة rand

ثم نستعمل الدالة mail وتضمن اربع براميترات :

1 – المرسل اليه : و هو في مثالنا هذا البريد الالكتروني المستخدم في التسجيل

2 – العنوان : عنوان الرسالة

3 – الرسالة : محتوى الرسالة و ف مثالنا سيكون المحتوى هو رابط التفعيل .

4 – الترويسة : و تختلف من نوع الى آخر حسب ( المرفقات – الترميز – السيرفر – المرسل .. إلخ .. )

ثم نقوم بمخاطبة قواعد البيانات بحيث تتم اضافة القيم كالactivation

وتضاف عشوائيا لاننا قمنا باضافة الدالة rand

وعندما يضغط المسجل رابط التفعيل نقوم بعمل استعلام والتحقق من عدد الصفوف عبر mysqlnumrows

واذا كان 0 فرابط التفعيل خطا

وبهكذا عرفنا فكرة برمجة خاصية تفعيل

ارجو ان اكون افدتكم

والفكرة جدا معقدة

وقريبا ساشرح كيفية كتابة الكود للافادة

تم تعديل هذه المشاركة بواسطة dr.php5 في 17 يونيو 2011 في 01:33

نسخة AGF العربية

النسخة قيد التطوير

رابط النسخة التجريبية

موقع النسخة الرسمي

شعار النسخة :

http://golden-forum.tk/AGF/styles/images/logo.png

<?php
echo ("I love php code ");
print(" Golden Forum Arab");
?>
#5

راجع الآتي: نموذج تسجيل و تفعيل التسجيل عبر البريد الإلكتروني

''‏اللهم إني أسالك إيمانا دائما وأسألك قلبا خاشعا وأسألك علما ‏نافعا وأسألك يقينا صادقا وأسألك دينا قيما وأسألك العافية من كل ‏بلية''

'‏اللهم أغفر للمؤمنين و المؤمنات و المسلمين و المسلمات الأحياء ‏منهم و الأموات'

www.it-scoop.com

#6

بالنسبة لإعمل كود التفعيل فكرتك جيدة لكنها لها بعض المشاكل:

Rand: ستقوم بعمل رقم عشوائى , الرقم يمكنه ان يتكرر إذا كانت كمية المشتخديم المسجلين كبيرة ستجد حتمآ ان اكثر من مستخدم له نفس الرقم

و لحل ذلك : قم بعمل رابط التفعيل يحتوى على متغيرين 1- رقم المستخدم 2- كود التفعيل

او يمكنك كحل آخر عمل كود التفعيل عبارة عن

md5($email) و بذلك سيكون كود التفعيل مختلف لكل واحد بحسب البريد الخاص به , يمكنك ايضأ إختيار طريقة تشفير sha1 مع salt مختلف لكل مستخدم

انصح بإستخدام Salt مختلف لكل مستخدم يكون رقم عشوائى و لا يعتمد على مدخلات المستخدم حتى تمنع عمليات التفعيل اليدوية

نصيحة صغير : يمكنك استخدما احد بيئات العمل الجاهزة و ستجد ان بها هذة الخصائص او ستجدها كإضافة لها , انا استخدم Codeigniter لأنها سهلة و يمكننى التحكم بها و تعديلها

#7

اخواني عندما جربت الدالة mail للارسال

فجاتني مشكلة

وهذا كود من كتابتي حسب فكرتيجو

وارجو تنبيهي على الخطا الذي في الكود

<?php
// ==> programming by : hussam alzahabi
session_start();
include ("config.php");
echo ("<meta content='text/html; charset=UTF-8' http-equiv='Content-Type' />");
echo ("<link href='style/style.css' movie='screen' rel='stylesheet' />");

/* جدول قاعدة  \==>  ~hosting~ <==|
CREATE TABLE `users` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`username` VARCHAR( 60 ) NOT NULL ,
`useremail` VARCHAR( 60 ) NOT NULL ,
`userpass` VARCHAR 60 ) NOT NULL ,
`zipcode` VARCHAR( 60 ) NOT NULL ,
`userphone` VARCHAR( 60 ) NOT NULL
`date` INT( 12 ) NOT NULL
`activation_code` VARCHAR( 255 ) NOT NULL
) ENGINE = MYISAM ;
*/

$activation_code = rand('99999999','00000000');
$date = time();
$un = mysql_real_escape_string(strip_tags($_POST['username']));
$up = mysql_real_escape_string(strip_tags(md5(md5($_POST['userpass']))));
$ue = mysql_real_escape_string(strip_tags($_POST['useremail']));
$z = mysql_real_escape_string(strip_tags($_POST['zipcode']));
$uph = mysql_real_escape_string(strip_tags($_POST['userphone']));
$usernamequery = mysql_query("select * from users where username='".$un."'
 and userpass='".$userpass."'") or die ("<b>Mysql Error</b>");
$userpassquery = mysql_query("select * from users where useremail='".$ue."'")
or die ("<b>MySql Error</b>");
 $to = ("".$ue."");
  $subject = ("".$un."مرحبا");
  $message = ("
  ".$un." مبرحبا بك
  يسرنا انضمامك الى اسرتنا
  وماعليك الى للضغط على الرابط التالي للتفعيل
  localhost/customerscript/activate.php?code=$activation_code
  ");
$headers  = ('MIME-Version: 1.0' . "\r\n");
    $headers .= ('Content-type: text/html; charset=utf-8' . "\r\n");
	$headers .=("from: g.com ");
    $headers .=("X-Mailer: smail-PHP ".phpversion()."\r\n");
if (isset($_POST['user']) and $_POST['user'] == 'do'){
  if(empty($un)){
  echo ("<center><div class='error'><b>
  يرجى ادخال اسم العميل
  </b></div></center>");
}elseif(empty($ue)){
  echo ("
  <center><div class='error'>
  <b>
   يرجى ادخال ايميلك
  </b>
  </div></center>
  ");
}elseif (strlen($up) <= 6 or empty($up)){
  echo ("<center><div class='error'>
  <b>
     كلمة المرور لاتقل عن 6 احرف
  </b>
  </div></center>");
}elseif(empty($z)){
  echo ("<center><b><div class='error'>يرجى ادخال الرمز البريدي</div></b></center>");
}elseif(empty($uph)){
  echo ("<center><div class='error'><b>يرجى ادخال رقم التلفون ولو كان غير صحيح </b></div></center>");
}elseif($_SESSION['code'] != $_POST['captcha'] or empty($_SESSION['code'])){
  echo ("<center>
  <div class='error'>
  <b>
  الرمز الذي ادخلته لا يطابق الذي في الصورة
  </b>
  </div>
  </center>");
}else{
 $insert = mysql_query("insert into users(username,activation_code,useremail,userpass,zipcode,userphone,date)
  values('$un','$activation_code','$ue','$up','$z','$uph','$date')") or die ("<b>mysql error</b>");
    mail($to,$subject,$message,$headers);
      echo ("<center><div class='true'>
      <b>
    تمت اضافة المعلومات الى الداتا وتم ارسال اليك رسالة التفعيل
      </b>        قف
      </div></center>");
   echo ("<br />");
}
}


echo ("
<center><div class='h1'>
<form action='".$_SERVER['PHP_SELF']."' method='post'>
<table cellpadding='5' border='0' cellspacing='0' width='50%' align='center'>
<tr>
    <td align='center' colspan='3'><h1>تسجيل عميل جديد</h1></td>
</tr>
<tr>
   <td align='center'><input type='text' name='username' class='text' /></td>
   <td>:</td>
   <td>اسم العميل</td>
</tr>
<tr>
   <td align='center'><input type='text' name='useremail' class='text' /></td>
   <td>:</td>
   <td>ايميل العميل</td>
</tr>
<tr>
   <td align='center'><input type='password' name='userpass' class='text' /></td>
   <td>:</td>
   <td>كلمة مرور العميل</td>
</tr>
<tr>
   <td align='center'><input type='text' name='zipcode' class='text' /></td>
   <td>:</td>
   <td>الرمز البريدي</td>
</tr>
<tr>
   <td align='center'><input type='text' name='userphone' class='text' /></td>
   <td>:</td>
   <td>رقم الجوال</td>
</tr>
<tr>
   <td align='center'><input type='text' name='captcha' size='6' class='text' /> <img src='captcha.php'  /></td>
   <td>:</td>
   <td>ادخل الرمز الذي في الصورة</td>
</tr>
<tr>
   <td colspan='3' align='center'><input type='submit' class='botton' value='سجل البيانات' />  <input type='reset' class='botton' value='مسح البيانات' c/> </td>
</tr>
</table>
<input type='hidden' name='user' value='do' />
</form></div></center>");

mysql_close($connectdb);
?>

نسخة AGF العربية

النسخة قيد التطوير

رابط النسخة التجريبية

موقع النسخة الرسمي

شعار النسخة :

http://golden-forum.tk/AGF/styles/images/logo.png

<?php
echo ("I love php code ");
print(" Golden Forum Arab");
?>
#8

لن تعمل دالة mail على جهازك و ستقوم بإظهار خطأ smtp server error او شىء من هذا القبيل .

و ذلك لأن جهازك لا يحتوى على smtp server و لكن نفس السكريب سيعمل على الهوست الخاص بك

#9
Blaze Boy كتب:

لن تعمل دالة mail على جهازك و ستقوم بإظهار خطأ smtp server error او شىء من هذا القبيل .

و ذلك لأن جهازك لا يحتوى على smtp server و لكن نفس السكريب سيعمل على الهوست الخاص بك

الكود صحيح 100% ؟؟

نسخة AGF العربية

النسخة قيد التطوير

رابط النسخة التجريبية

موقع النسخة الرسمي

شعار النسخة :

http://golden-forum.tk/AGF/styles/images/logo.png

<?php
echo ("I love php code ");
print(" Golden Forum Arab");
?>
#10

رح أسهل المهمة لك

وتابع معي جيدا

أولا

الجدول تبع الأعضاء لازم تظيفلهم هذه الخانات user_activated و activation_code

خانة user_activated هي التي يتم معرفة هل تم تفعيل العضوية أم لا

تكون القيمة الإفتراضية بها 0, ويعني أن العضو غير مفعل

وإذا تم التفعيل رح تتحول إلى 1 عن طريق UPDATE

عند التسجيل سيتم انشاء كود تفعيل

عبارة عن تشفير الإيميل

وتقوم بادخاله في الجدول الخاص بالعضو

ثم تعطيه رابط مثلا

activate.php?code=MD5_OF_EMAIL

وفي صفحة التفعيل

تقوم بجلب العضو اللي user_activated تبعو = 0, و activation_code = الكود اللي أدخله في الرابط

إذا وجدت العضو

تقوم بعمل update للـ user_activated تبعو, وتخليها 1

وتقوم بإعادة توجيهه

والسلام عليكم

1
#12

طيب انا عندي فكرة ثانية اتمنى احد يشرحها بالاكواد وشنو مطلوب انشء من جداول او قواعد وهي ان العضو يسجل لكن مايقدر يدخل لحتى صاحب الموقع يفعل الاي دي هل هذا ممكن؟وكيف؟

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…