ما المشكل بهذا الكود .. ونأسف على الازعاج

السلام عليكم

انا اأسف على الازعاج

لكن ما المشكل بهذا الكود ؟

if(isset($_POST['login'])){
if(empty($u_email) or empty($u_pass)){
    echo" 
    الرجاء ملئ جميع الحقول
    "; 
}else {
    $sql = mysql_query("SELECT * FROM user WHERE u_email ='".$u_email."' AND u_pass = '".$u_pass."'");
        if (mysql_num_rows($sql > 0)) {
        $fetchLquery = mysql_fetch_object($sql);
        $uid = $fetchLquery->u_id;
        $uemail = $fetchLquery->u_email;
        $upass = $fetchLquery->u_pass;        

        if ($uemail != $u_email AND $upass != $u_pass){
            echo" 
               البيانات المدخلة غير صحيحة
            ";
        }else {
          setcookie("uid",$uid, time()+60*60*24) ;
          setcookie("login",1, time()+60*60*24) ;
            echo" 
                    تم تسجيل الدخول بنجاح ...جاري تحويلك الى الرئيسية
            ";
            refresh("index.php", "3");
        }
    }else {
        echo" 
        البيانات  التي ادخلتها غير صحيحة
    ";        

    }

}
}
يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

الخطأ هنا

    if (mysql_num_rows($sql > 0)) {

يجب ان يكون هكذا

  if (mysql_num_rows($sql) >= 0) {

ملاحظة الكود الخاص بك يحوي على ثغرة الحقن.

اسف ...

وكيف ازيل هذه الثغرة ؟ ^^

ثغرة الحقن تمكن من تكوين إستعلام مخصص في حالة النصوص قفل النص بإستخدام ' وكتابة إستعلام مخصص

إن كان النص html أفضل إستبدال ' ب

     '

ليتم عرضها في html بشكل صحيح أو يمكن وضع \ قبل ' إستخدم دالة mysql_real_escape لعمل ذلك بسهولة في حالة الارقام أفضل هذا

   (int)($var)

ملاحظة إن كان رقم float إستخدم

   (float)($var)

$var هو المتغير الذي سيدخل إن كان نص سيكون قيمته 0 لمنع الحقن أو يمكن التأكد من أنه رقم ام لا بدالة is_numeric;

ثغرة الحقن تمكن من تكوين إستعلام مخصص في حالة النصوص قفل النص بإستخدام ' وكتابة إستعلام مخصص

إن كان النص html أفضل إستبدال ' ب

     '

ليتم عرضها في html بشكل صحيح أو يمكن وضع \ قبل ' إستخدم دالة mysql_real_escape لعمل ذلك بسهولة في حالة الارقام أفضل هذا

   (int)($var)

ملاحظة إن كان رقم float إستخدم

   (float)($var)

$var هو المتغير الذي سيدخل إن كان نص سيكون قيمته 0 لمنع الحقن أو يمكن التأكد من أنه رقم ام لا بدالة is_numeric;

لديك دقة ملاحظة ما شاء الله

if (mysql_num_rows($sql > 0)) {

لا عندما ازيل

)

فلن تكون لل if قوس

لاحظ

لن تزيل القوس ستغير مكان القوس أنت لم تكتب قوس الدالة لاتكتب < بداخل حقل الدالة .

شكرا جزيلا

:)

سأجرب الان واعطيك خبر

شكرا اخي :) لقد اصلح الامر

وماهو الخطا؟

مهما سجلت دخول يقول لي

    البيانات  التي ادخلتها غير صحيحة

يجب تعريف المتغيرات $u_email

مثلا

 $u_email = $_POST['email']

فقد كنت أواجه مشكلة معها في نسخ سابقة

معرفه هي ايضا

$u_pass = md5($_POST['u_pass']); 
$u_email = strip_tags($_POST['u_email']);  

هل يجب ان ازيل : strip_tags مثلا

ماهي جداول قاعدة البيانات؟

u_id

u_name

u_pass

u_email

u_ulv

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

 الاتصال [Config.php] حتى يتأكد من مطابقة البيانات المدخلة مع البيانات الموجودة فى قاعدة البيانات

ضع كود ;"include "config.php اعلى هذه الصفحة ولاتنسى أيضا ;()ob_start فى الاعلى و ;()ob_end_flush فى

نهاية الصفحة حتى لا يقابلك أى مشاكل مع الكوكيز ^__^