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

نظام تسجيل على موقع بثلاث مراحل

بدأه apt في 13 نوفمبر 2008 · 14 رد · 1,370 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم،

لقد اعدت طرح هذا الموضوع مجددا بعد طرحه منذ 4 سنوات تقريبا هنا في هذا المنتدى.

ولما لم اتلق عليه أية مساعدة اظطررت بعد عدة محاولات لانجاز هذا السكريبت الى التوقف عن تطوير موقعي وكذا مواصلة تعلم لغة الـ PHP.

أعود الى موضوعي فأقول :

هناك امران معا أود الخوض فيهما :

1) طريقة التسجيل وكيفيتها من ثلاث خطوات مع اطهار رقم الخطوة الفعالة.

2) لوحة التحكم

1) :-

الخطوة الاولى :

الموافقة على شروط التسجيل وادخال المعرف + كلمة السر + البريد الالكتروني مع التاكد من خلو قائمة الاعضاء المسجلين من المعرف الجديد ومن البريد الالكتروني والتاكد كذلك من خلو حقل المعرف وكلمة السر وكذا البريد من الحروف الممنوعة مثل : *-+/؟ـ{()>&"'=°< ....

الخطوة الثانية :

بعد ذلك ينتقل طالب التسجيل الى الخطوة الثانية باستعمال الجلسات لنقل المعلومات السابقة

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

الخطوة الثالثة :

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

****

إذا كان للأعضاء اقتراحات لمراحل انجاز هذا السكريبت وتتقسيمه مثلا الى أجزاء يتم العمل عليها ثم في النهاية يتم جمع كل تلك الأجزاء مع بعض أو تقديم وصلات لدورات تم التطرق فيها الى مثل هذا الموضوع، فمرحب بها.

****

وهذه هي ملفات الـ HTML اللازمة في المرفقات.

شكرا للمساعدة وبارك الله فيكم.

3_steps_registration_v2.zip

#2

عزيزي

يمكنك استخدام الجافا

مثال انظر http://jquery.bassistance.de/accordion/demo/

في اخر الصفحة.. تحت عنوان accordion wizard

فهي تنتقل بك للمراحل 1،2......&

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

بالتوفيق

تم تعديل هذه المشاركة بواسطة DeaD SouL في 15 نوفمبر 2008 في 00:04

أعتذر وبشده عن انقطاعي.. وذلك بسبب مشروعي الجديد

-------------------

100(سبحان الله وبحمده، سبحان الله العظيم) = 0 سيئة

-------------------

dssighg7.png

#3

السلام عليكم أخي DeaD SouL ،

بما أنه لي مدة طويلة في الانقطاع عن تطوير موقعي فإنه بالتأكيد فاتني الكثير ومنها تقنية الـ Ajax التي أسمع بها ولا أعرفها.

اما بخصوص الجافا سكريبت فاني جربت من ذي قبل دالة :

  1. <a href="java script:history.back()">
  2.  

ولم تنفع معي، بحيث عند العودة الى الوراء مثلا افقد جميع ما تم ملؤه من حقول النموذج السابق :angry:

فهل لي بمثال على ذلك حتى أجربه ؟

بارك الله فيك.

#4

عزيزي وصلة الاضافة التي اعطيتك اياها.. لا تحتاج للدالة التي ذكرتها..

اما ان لم ترد استخدامها..

فبامكانك تضمين قيمة في النموذج بنفس اسم المدخل ومن نفس النوع

مثلا

<form method="post" action="add.php">
<input type="text" name="title" value="<?=$_POST['title']?>" />
...
</form>

فان لم تتوافر الشروط التي تريدها في المدخلات.. فإنه يعرض ماتم ادخاله سابقا في المدخلات نفسها

ولا تنسى تأمين المدخلات.. فما كتبته كان مجرد مثال ولا انصح باستخدامه كما هو دون تأمين المدخلات..

بالتوفيق

أعتذر وبشده عن انقطاعي.. وذلك بسبب مشروعي الجديد

-------------------

100(سبحان الله وبحمده، سبحان الله العظيم) = 0 سيئة

-------------------

dssighg7.png

#5

السلام عليكم،

DeaD SouL كتب:
عزيزي وصلة الاضافة التي اعطيتك اياها.. لا تحتاج للدالة التي ذكرتها..

اما ان لم ترد استخدامها..

لم افهمها وخاصة بوجود كلمة JQuery.

اقتباس
فبامكانك تضمين قيمة في النموذج بنفس اسم المدخل ومن نفس النوع

مثلا

<form method="post" action="add.php">
<input type="text" name="title" value="<?=$_POST['title']?>" />
...
</form>

فان لم تتوافر الشروط التي تريدها في المدخلات.. فإنه يعرض ماتم ادخاله سابقا في المدخلات نفسها

ولا تنسى تأمين المدخلات.. فما كتبته كان مجرد مثال ولا انصح باستخدامه كما هو دون تأمين المدخلات..

بالتوفيق

كيف يتم تأمين المدخلات ؟

شكراً.

#6

عزيزي

ال jQuery هو اطار عمل للجافاسكربت يسهل ويوفر الوقت والعديد من الاسطر البرمجيه.. وهناك العديد من الاضافات التي برمجت على اساسها للجافا سكربت..

بالنسبة لتأمين المدخلات

فأولا عليك معرفة القيمة المتوقعه من المتغير.. ان كانت عددية ام نصيه.. وبناءً عليه تقوم بحماية المدخلات من اخطار ال sql injection (حقن الاس كيو ال) وxss

بالتوفيق

أعتذر وبشده عن انقطاعي.. وذلك بسبب مشروعي الجديد

-------------------

100(سبحان الله وبحمده، سبحان الله العظيم) = 0 سيئة

-------------------

dssighg7.png

#7

أخي الفاضل :

هلا تكرمت علي ببعض الأسطر من الكود لأني ببساطة لا أعرف ماذا تعني الـ SQL Injection و لا الـ XSS. :blush:

#8

عزيزي

لمعرفة المزيد عن ال xss راجع هذه الوصله

وعن ال sql injection راجع هذه الوصله

بالتوفيق

أعتذر وبشده عن انقطاعي.. وذلك بسبب مشروعي الجديد

-------------------

100(سبحان الله وبحمده، سبحان الله العظيم) = 0 سيئة

-------------------

dssighg7.png

#9

شكرا لك أخي على الروابط.

وقد اطلعت في موقع عربي آخر جاء فيه دكر انه للحد من هذه المشكلة يجب :

- بالنسبة للـ SQL Injection وحرفا الـ ( ' و ") إضافة دالة addslashes لمدخلات قاعدة البانات.

- بالنسبة للـ XSS إضافة دالة htmlspecialchars للمدخلات.

هذا بالنسبة للتأكد من المدخلات النصية وخطورتها.

فما خطر المدخلات العددية وكيف يتم الـتاكد منها ؟

شكراً.

#10

عزيزي

بالنسبة لل sql injection فان الداله addslashes وحدها لا تضمن الحمايه الكافيه

استعمل mysql_real_escape_string فهي افضل من ال addslashes

والافضل هو ان تستعمل كلاس للتعامل مع القاعده يدعم تجهيز الاستعلامات مثل PDO ، mysqli

اما ال xss فان ال htmlspecialchars ايضا لا تكفي.. حيث انها تحميك من <script>...</script>

ولكنها لا تتعرف على alert(document.cookie) اذا ماوضعت في الاحداث مثلا

اما المدخلات العدديه.. فلاخطورة منها اذا كنت متوقع ان يحتوي متغير ما على قيمة عدديه فقط.. واسندت (int) بجانبه

مثال

$age = (int) $_REQUEST['age'];

او بضبط نوع المتغير

SetType($_REQUEST['age'],'integer');

او باستخدام التعابير القياسيه

$age = preg_replace("/[^0-9]/","", $_REQUEST['age']);
if($age=='') $age = 0;

فأي منهم يفي بالغرض

نصيحه.. اقرأ المزيد ولا تكتفي بموضوع معين..

بالتوفيق

تم تعديل هذه المشاركة بواسطة DeaD SouL في 17 نوفمبر 2008 في 02:01

أعتذر وبشده عن انقطاعي.. وذلك بسبب مشروعي الجديد

-------------------

100(سبحان الله وبحمده، سبحان الله العظيم) = 0 سيئة

-------------------

dssighg7.png

#11
اقتباس
اما ال xss فان ال htmlspecialchars ايضا لا تكفي.. حيث انها تحميك من <script>...</script>

ولكنها لا تتعرف على Java script:alert(document.cookie) اذا ماوضعت في الاحداث مثلا

وهذه htmlspecialchars بما أعوضها ؟

#12

عليك البحث ثم البحث ياعزيزي..

فمثلا الداله strip_tags تحذف وسوم الهتمل.. مع ذلك هي تقلل من الخطورة.. ولكن لاتمنعها كليا

فابحث هنا وفي سوالف.. ستجد العديد من الدوال الخاصه بالحمايه من xss

بالنسبه لي استعمل العديد من الدوال للوقايه قدر الامكان من اخطار ال xss منها

strip_tags

dsStripAttribs دالة خاصه قمت بتطويرها تجدها في سوالف باسم stripAttribs

mb_convert_encoding

htmlentities

dsXSS داله خاصه قمت بدمج اكثر من داله فيها وجدتهم على الانترنت (تجدهم في سوالف)

وداله بالجافا تقم بتأمين المدخلات قبل ارسالها..

ربما لا يكون ما استعمله هو الافضل.. ولكني احاول قدر الامكان التقليل من الخطورة

بالمناسبة إن شاء الله قريبا سأطرح كلاس للحمايه من اشهر الثغرات.. للتطوير والاستفاده منه.. قد يفيدك

بالتوفيق

أعتذر وبشده عن انقطاعي.. وذلك بسبب مشروعي الجديد

-------------------

100(سبحان الله وبحمده، سبحان الله العظيم) = 0 سيئة

-------------------

dssighg7.png

#13

السلام عليكم،

نعم أخي DeaD الحماية مهما كانت فلن تكون فعالة مائة بالمائة.

وجدت دالة كثيرة الاستعمال ولكن ليس بها mysql_real_escape

  1. function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = ""
    )
  2. {
  3. $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;
  4.  
  5. switch ($theType) {
  6. case "text":
  7. $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
  8. break;
  9. case "long":
  10. case "int":
  11. $theValue = ($theValue != "") ? intval($theValue) : "NULL";
  12. break;
  13. case "double":
  14. $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
  15. break;
  16. case "date":
  17. $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
  18. break;
  19. case "defined":
  20. $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
  21. break;
  22. }
  23. return $theValue;
  24. }
  25.  

هل هي جيدة ؟

#14

عزيزي

ال addslashes تضع قبل علامات التنصيص سلاش تاركه باقي الحروف التي قد تؤثر على قاعدة البيانات

بينما ال mysql_real_escape_string تقوم بوضع السلاش قبل كل ماقد يؤثر على القاعده

راجع http://www.google.com/search?hl=en&q=a...5&oq=addsla

بالتوفيق

أعتذر وبشده عن انقطاعي.. وذلك بسبب مشروعي الجديد

-------------------

100(سبحان الله وبحمده، سبحان الله العظيم) = 0 سيئة

-------------------

dssighg7.png

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