al-marwa بوركت يداك ما قصرت في الإجاية ..
س6 : عندما جربت إنشاء الجدول بلوحة التحكم ظهرت لي هذه الأوامر :
هل يفضل إضافة هذا السطر الأخير أم لا ؟؟ هل تنصحوني بإضافتها أم لا ؟
إذا كنت ستحددين ترميزاً خاصاً غير الافتراضي لجداولك ، يفضّل أن تستخدميه ، المحرك الافتراضي هو MyISAM لذلك لا ضرورة للعبارة .. لكن الاحتياط ضروري أحياناً .. أنا لا أستخدمها في برمجتي ..
- ملاحظاتي:
1. هناك خطأ مطبعي في :
كود PHP:
<form achtion=newuser?next=1 method=POST >
achtion ، والصحيح: action ..
2. حاولي أن تستخدمي علامات التنصيص المزدوجة Double Quotations في قيم خصائص وسوم الـ HTML ..
يعني مثلاً:
كود PHP:
<form achtion=newuser?next=1 method=POST >
اجعليه:
كود PHP:
<form action="newuser?next=1" method="POST">
هذا سيفيدك في سهولة الانتقال إلى XHTML لاحقاً إن شاء الله تعالى ..
3. اهتمي بحماية أكوادك ، في الإدخال إلى قاعدة البيانات مثلاً ، يمكنك الاستعانة بدالة addslashes أو mysql_escape_string أو mysql_real_escape_string ، وأنا أفضّل الأخيرة ..
كود PHP:
$name = $_POST['name'];
$pass = md5($_POST['pass']);
$email=$_POST['email'];
ستصبح هذه السطور:
كود PHP:
$name = mysql_real_escape_string(trim($_POST['name']));
$pass = md5(trim($_POST['pass']));
$email = mysql_real_escape_string(trim($_POST['email']));
هذا يساعد في منع حقن الإستعلام بأوامر خارجية SQL Injection ..
4. التركيز أثناء كتابة الكود يوفّر جزءاً كبيراً من الوقت في حل المشاكل لاحقاً:
كود PHP:
$reg = "INSERT INTO admin(name,pass,email,admin) VALUES('$name','$pass','$email',,'$admin')";
هناك فاصلة أتت عن طريق الخطأ :# .. ستصبح:
كود PHP:
$reg = "INSERT INTO admin(name,pass,email,admin) VALUES('$name','$pass','$email','$admin')";
5. عند إرسال نموذج بطريقة POST استخدمي العنصر REQUEST_METHOD من دالة SERVER المعرفة مسبقاً .
فبدلاً من إرسال الصفحة إلى next=1 ، سنرسلها إلى اسم الملف فقط ، حيث أنه لا توجد سوى هذه العملية هنا ، فلا داعي للتفرع بواسطة GET ..
السطر التالي:
كود PHP:
if($_GET['next']==1) {
سيصبح:
كود PHP:
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
العنصر REQUEST_METHOD من هذه المصفوفة يحمل دائماً طريقة الوصول للصفحة ، في العادة يكون إما POST أو GET ، عند دخول الصفحة بشكل طبيعي ستكون GET ، أما إن حملت الصفحة بيانات مرسلة بطريقة POST ، فستكون القيمة POST وسيتم تنفيذ جملة الشرط ..
6. هذا الجزء يبدو لي غريباً:
كود PHP:
$email = trim( $email );
if(!empty($email)){
if(preg_match('/^[a-z0-9\\_\\.]+@[a-z0-9\\-]+\\.[a-z]+\\.?[a-z]{2,4}$/i', $email, $match)) return strtolower($match[0]);
else return false;
}
else return false;
}
فهذا السطر :
كود PHP:
$email = trim( $email );
لم يسبقه تعريف لـ email$ ، فما هو email$ .. ؟! أعتقد أنه عليك استبدالها بـ :
كود PHP:
$email = trim($_POST['email']);
هذا ما لدي حالياً بعد نظرتي السريعة للردود والكود وكل ما سبق ..
المعذرة على التقصير ..
تحياتي، أشرف السمهوري