السلام عليكم ورحمة الله
عندي أسئلة للأخ Al Mobarmeg المبرمج أرجو أن يتكرم بالاجابة عنها
كما أرجو الفائدة للجميع من هذا الموضوع![]()
السلام عليكم ورحمة الله
عندي أسئلة للأخ Al Mobarmeg المبرمج أرجو أن يتكرم بالاجابة عنها
كما أرجو الفائدة للجميع من هذا الموضوع![]()
أرجو أن تتكرم بشرح طريقة انجاز ما يلي :
1 - ارسال بريد لتفعيل الاشتراك عند تسجيل أي عضو في الموقع
2 - صورة لتوليد رقم عشوائي مثل الصور التي تعتمد في تسجيل حساب لدى الياهو
3 - طريقة ارسال الباسورد الى العضو في حال فقدانه
4 - نظرة حول البرمجة بالكائنات ,طريقة برمجة كائن أو كلاس
أرجو أن لا تخيب أملي
وجزاك الله خيرا على المساعدة
كما أرجو أن تكتب لنا الشرح بالطريقة العادية وليس بالبــ OOP
وشكرا مجددا![]()
بما أنك طلبته هو شخصياً لن أتدخل في الرد عليك
يمكنك انتظاره .......
تحياتي
السلام عليكم
أسف أذا دشيت عرض بس أخوي PHP-Master02 أذا تقدر تشرح شرح مبسط يكون أحسن للجميع
و أسف أخوي داعية أني دشيت عرض
وشكراً لكم
أخوكم حمد
السلام عليكم ورحمة الله![]()
الإخوة الأفاضل شكرا لكم
طبعا أنا لم أفضل شخصا على آخر حينما طرحت الأسئلة
فقط الأكواد التي يكتبها الأستاذ المبرمج جميلة ومميزة
ولا مانع من مساعدتنا اخي PHP-Master02
بارك الله فيك وحفظك
تحياتي![]()
أنا لم أقصد أنك تفضل شخص على آخر ...
ولكن بما أنك طلبته هو أردت أن أنتظر ردوده
على العموم سأقوم بمساعدتك في حال لم يأت ....
هذا صحيح يا داعيةكل واحد له طريقة .. وبدأنا نشعر مع الاحتكاك بين المبرمجين هذه الأيام بملامح مميزة لكل منهم ماشاء الله
بس انا سعيد جدا جدا جدا جدا بوجود مثل هؤلاء المبرمجين الفاهمين (لا أريد أن أذكر أسماء لأنني بالتأكيد سأنسى أسماء) .. وكلنا نحمل ميزة مهمة جدا وهي الرغبة في التطور والتعلم .. وهناك أفكار للتعاون بيننا على نطاق واسع لكن سأبدأ في التركيز فيها عندما أنتهي من انشغالي هذه الأيام .. دعواتكم بالتوفيق يا شباب ..
داعية: سؤالك عن كلمة المرور له طريقتان حسب نوع كلمة السر .. لذلك حدد هل كلمة السر مشفرة أم عادية؟
__________________
....
محمد حسام
انترنت بلس
السلام عليكم ورحمة الله
أستاذي أنترنت بلس : بارك الله فيك على كلماتك الطيبة
شعور جميل جدا![]()
أخ PHP-Master02
لن أنسى مساعدتك لي سابقا
أود أن أشكرك من جديد على ما تقدمه لاخوانك
![]()
الطريقة سهلهالمشاركة الأصلية كتبت بواسطة داعية
-- شرح مفصل --
بالنسبة لتفعيل الإشتراك فعند تسجيل العضو يتم إدخال البيانات إلى الجدول ويكون فيه حقل وليكن اسمه Allow_reg ( مثلاً )
وتكون القيمة 1 أي مفعل اشتراكه أو 0 إذا غير مفعل اشتراكه
وتضع بالمنتدى لا يستطيع أحد كتابة موضوع او الرد إلا أن تكون قيمة الحقل Allow_reg لديه هي 1
وعند تسجيل العضو افتراضياً تكون القيمة = 0
وترسل رسالة على بريدة بالدالة mail سهله هذي
بها هذا الرابط :
http://www.ala7lam.net/script/allow-reg.php?userid=10
في ملف allow-reg.php ورقم العضوية هي 10 .. طبعا تستخرج العضو من قاعدة البيانات بحلقة تكرار while
وعند الدخول للصفحة السابقة يتم تحديث حقل Allow_reg من القيمة 0 إلى1 أي تم تفعيل الاشتراك
---------------
بالنسبة لكلمة المرور فهي على النحو التالي
عند طلب كلمة المرور يتم إرسال رسالة بريدية إلى بريد هذا العضو بها رابط مثلاً :
http://www.ala7lam.net/script/forget....php?userid=10
ويتم تحديث حقل password الخاص بكلمة المرور إلى كلمة مرور عشوائية بأي دالة
وإرسال رسالة إلى هذا العضو بها كلمة المرور الخاصة به الجديدة ( العشوائية )
بالنسبة للكلاسات فهذا افضل درس له هذا
http://www.arabportal.net/news.php?action=view&id=24
آسف إذا الشرح بسيط لكن كما تلاحظ الطريقة سهله بس تحتاج شوية تفكير
بالتوفيق ،،،
__________________
الإستضافات :
http://www.ala7lam.net/host.html
موضوع الإستضافات وخدماتنا :
إستضافات وخدمات شبكة الأحلام التطويرية ...
شكرا للإفادة يا أخي ساري وهذه ملاحظات على كلامك:
تفعيل الاشتراك:
ناقص شيء هام .. لأنه لو بالصورة اللي انت شرحتها إذن أي واحد بعد ما يسجل يكتب عنوان في آخره رقم اشتراكه ويتم تفعيله .. لذلك ما يحدث هو:
هناك حقلان إضافيان واحد هو حالة الاشتراك (0 - 1) والآخر هو رقم (أو حروف) عشوائي طويل (8 حروف أو أرقام مثلا) ..
عند الاشتراك يتم إنشاء هذا الرقم السري الطويل وإرساله في رسالة التفعيل .. يكون في رسالة التفعيل: رقم المشترك والرقم السري الطويل .. عند دخول صفحة التفعيل يتم البحث عن مشترك رقمه كذا وكود تفعيله كذا .. إذا وجد يتم تحديث صف بياناته لتكون حالة الاشتراك 1 ..
كذلك:
إذا كان لديك صف واحد تريد استرجاعه فلا تستخدم while ..طبعا تستخرج العضو من قاعدة البيانات بحلقة تكرار while
استرجاع كلمة المرور:
تصورك غير صحيح .. مثلا أنا أعرف اسمك في سوالف .. فإذا ضغطت "استرجاع كلمة المرور" وقامت سوالف بتغيير كلمة السر فسوف يكون هذا خطأ لأنك لم تطلب تغييرها .. صح؟
طريقتك فيها دمج بين طريقتين: طريقة كلمة السر العادية والكلمة المشفرة ..
__________________
....
محمد حسام
انترنت بلس
الأخ ساري
جزاك الله خيرا على الشرح
يمكنك الاطمئنان فهمت الفكرة
شكرا لمداخلتك استاذ أنترنت بلس
بارك الله فيك
سأبدأ في التطبيق
وأطرح الأسئلة بعد التطبيق مباشرة
جزيتم خيرا
وبارك فيك بس انت لسه ماعرفتش اجوبة أسئلتك
دلوقتي انت عرفت طريقة تفعيل الاشتراك ..
طريقة الصورة التي فيها حروف وأرقام:
في صفحة التسجيل بتنشئ متغير وتضع فيه عدد معين من الحروف والأرقام العشوائية .. وتستخدم دوال إنشاء الصور الخاص بـGD لينشئ صورة فارغة بمقاسات معينة ويكتب فيها الكود العشوائي .. ويكون فيه حقل لكتابة هذا الكود .. وتقوم بعمل حقل مختفي فيه القيمة المشفرة من الكود اللي انت لسه مخترعه في نفس الصفحة .. لما يضغط الزر للتسجيل بتشوف قيمة الحقل المختفي والقيمة المشفرة للحقل اللي هو لازم يكتب فيه الكود .. إذا تطابقوا يبقى خلاص ..
طريقة إرسال الباسوورد:
إذا كانت الباسوورد عادية مش مشفرة فانت بسهولة بتطلب منه الايميل أو اسم المستخدم او اي بيانات .. فإذا وجدت هذه البيانات عندك في الجدول بترسل له كلمة المرور على الايميل عادي ..
أما إذا كانت مشفرة فبيكون عندك حقلين إضافيينواحد لكلمة السر البديلة (ويكون فاضي في البداية) وواحد لكود تفعيل تغيير كلمة السر .. إذا طلب استرجاع كلمة المرور بتطلب من الايميل او اسمه .. اذا وجدته في الجدول بتنشئ كلمة مرور جديدة تضعها في حقل كلمة المرور البديلة وتنشئ كود عشوائي تضعه في حقل كود تفعيل تغيير كلمة المرور وترسل له إيميل فيه رابط يكون في الرابط: رقم المستخدم - كود تفعيل تغيير كلمة السر .. إذا وصله الإيميل وضغط الرابط بتعمل التالي: تحديث كلمة السر القديمة الأصلية لتصبح كلمة السر الجديدة - مسح كلمة السر البديلة - مسح كود تفعيل تغيير كلمة السر .. وهذه طريقة المنتديات .. لا أعرف إذا كان هذا ما يفعلونه ولكن هذا ما فعلته عندما أردت تقليد طريقتهم ..
الكلاسات: رابط أخي ساري درس مفيد جدا ..
__________________
....
محمد حسام
انترنت بلس
شكرا للمرة الثانية
بارك الله فيكم
شرح رائع أستاذ أنترنت بلس
السلام عليكم ورحمة الله،
فلنفترض أننا قمنا بتنفيذ استعلام الـ SQL التالي لبناء جدول المستخدمين:1 - ارسال بريد لتفعيل الاشتراك عند تسجيل أي عضو في الموقع
حيث أن:كود:CREATE TABLE users ( id int UNSIGNED NOT NULL AUTO_INCREMENT, username text NOT NULL, password char(32) NOT NULL, email text NOT NULL, activated int(1), activate_id char(8), PRIMARY KEY(id) ) type=MyIsAm;
id : رقم المستخدم
username : اسم المستخدم
password : كلمة المرور
email : البريد الالكتروني
activated : يحوي على 1 إذا كان المستخدم تم تفعيل اشتراكه، و 0 في عدم التفعيل
activate_id : رقم عشوائي لتفعيل الاشتراك
فلنفترض أن المستخدم قام بإرسال بيانات تسجيله إلينا عن طريق POST، بحيث:
$_POST['username'] : تحتوي على اسم المستخدم
$_POST['password'] : تحتوي على كلمة المرور المشفرة (عن طريق MD5 مثلاً)
$_POST['email'] : تحتوي على البريد الالكتروني
فيجب التأكد منها في البداية بكل تأكيد، واذا كان وضع الـ magic_quotes_gpc هو 0 فيجب اضافة شرطات لما حصلنا عليه.
مثال لإضافة الشرطات المقصودة:
الآن عند الاضافة .. يجب أن نضيف 0 في activated ويجب أن نقوم بعمل رقم عشوائي ونضعه في activate_id وارساله في رسالة نخبره عن طريقة التفعيل.كود PHP:
<?php
// التحقق من أن الـ magic_quotes_gpc في وضع off
if(!get_magic_quotes_gpc())
{
// اضافة شرطات لما في مصفوفة $_POST (تهريب ما بها)
foreach($_POST as $k=>$v)
{
$_POST[$k] = Addslashes($v);
}
}
?>
ونقوم بصنع ملف actiavte.php يحتوي على نموذج به خانة لكتابة كود التفعيل وخانة مخفية تحتوي على قيمة $_GET['u']كود PHP:
<?php
// الاتصال بقاعدة البيانات
// السيرفر: localhost , اسم المستخدم: user , كلمة المرور: pass
MySQL_PConnect('localhost', 'user', 'pass')
Or Die(MySQL_Error());
// اختيار قاعدة البيانات dbname
MySQL_Select_DB('dbname')
Or Die(MySQL_Error());
// التحقق من عدم وجود المستخدم
$query = MySQL_Query("SELECT id FROM users WHERE username='{$_POST['username']}'") Or Die(MySQL_Error());
// اذا كان عدد السجلات الناتجة من الاستعلام أكبر من 0
if(MySQL_Num_Rows($query) > 0)
{
// طباعة رسالة تفيد بوجود المستخدم.. ثم الخروج
echo 'المستخدم '.$_POST['username'].' موجود بالفعل!';
exit;
}
// افراغ الذاكرة من نتيجة الاستعلام
MySQL_Free_Result($query);
// انشاء ارقام وحروف عشوائية لتفعيل الاشتراك
$activate_id = substr(md5(time().crypt(time())), 16, 8);
// تشفير كلمة المرور عن طريق MD5
$_POST['password'] = md5($_POST['password']);
// اضافة المستخدم لجدول users
MySQL_Query("INSERT INTO users (username,password,email,activated,activate_id) VALUES ('{$_POST['username']}', '{$_POST['password']}', '{$_POST['email']}', 0, '$activate_id')")
Or Die(MySQL_Error());
// أخذ رقم المستخدم
$USER_ID = MySQL_Insert_ID();
// ارسال رسالة تحتوي على كود التفعيل
mail($_POST['email'], 'كود تفعيل المستخدم', "السلام عليكم..\nارجوا زيارة الصفحة http://www.site.com/activate.php?u=$USER_ID وادخال الرقم $activate_id حتى يتم تفعيل اشتراكك.\nوشكراً!");
?>
وحين نريد أن نقوم بمعالجة النموذج نقوم بشيء كالتالي:
كود PHP:
<?php
// التحقق من أنه تم ارسال رقم المستخدم في $_POST['u'] ورقم التغعيل في $_POST['code']
if(!(int)$_POST['u'] || !$_POST['code'])
{
// احد الأشياء مفقودة .. طباعة رسالة والخروج
echo "حدث خطأ ما!";
exit;
}
// جعل قيمة $_POST['u'] هي رقمية (integer) واضافة شرطات لقيمة $_POST['code']
$_POST['u'] = (int) $_POST['u'];
$_POST['code'] = Addslashes($_POST['code']);
// يجب أن تقوم بالإتصال بالـ MySQL Server
// ..
// ..
// الاستعلام عن المستخدم
$query = MySQL_Query("SELECT activate_id FROM users WHERE id='{$_POST['u']}' AND activated=0") Or Die(MySQL_Error());
// اذا كانت النتائج أقل من 1
if(MySQL_Num_Rows($query) < 1)
{
// طباعة رسالة عدم وجود المستخدم .. ثم الخروج
echo 'المستخدم غير موجود أو أنه قد تم تفعيله سابقاً!';
exit;
}
// جلب الناتج من الاستعلام
$result = MySQL_Fetch_Object($query);
// اخلاء الذاكرة من الاستعلام
MySQL_Free_Result($query);
// التحقق من مطابقة كود التفعيل مع الكود الموجود في قاعدة البيانات
if($_POST['code'] == $result->activate_id)
{
// تم التأكد من كود التفعيل.. تغيير حالة المستخدم إلى مفعل
MySQL_Query("UPDATE users SET activated=1 WHERE id='{$_POST['id']}'")
Or Die(MySQL_Error());
// طباعة رسالة بنجاح عملية التفعيل
echo 'تم تفعيل المستخدم بنجاح!';
}
else
{
// الكود خاطىء
echo 'الكود المدخل غير صحيح!';
exit;
}
?>
__________________
ArabBB ... SoooooN!
هناك العديد من الطرق.. مثلاً عن طريق مكتبة الـ GD2 - صورة لتوليد رقم عشوائي مثل الصور التي تعتمد في تسجيل حساب لدى الياهو
الفكرة الأساسية هي وضع قيمة مخفية في النموذج تحتوي قيمة العدد ولكن مشفرة بتشفير ثنائي الاتجاه..
هناك درس بسيط أعتقد أنه سوف يشرح الفكرة على الرابط
http://www.phphulp.nl/php/scripts/9/299/
__________________
ArabBB ... SoooooN!