السلام عليكم لو سمحتوا بدي مساعدة انا مش فاهمة هاد الفنكشن يا ريت حدا يشرحلي شو بعمل بالضبط .. ومشكورين
mysqli_real_escape_string($con,$newpers);
السلام عليكم لو سمحتوا بدي مساعدة انا مش فاهمة هاد الفنكشن يا ريت حدا يشرحلي شو بعمل بالضبط .. ومشكورين
mysqli_real_escape_string($con,$newpers);
تم تعديل هذه المشاركة بواسطة Lama Palestine في 22 أكتوبر 2013 في 18:46
وعليكم السلام أخت لما:
mysqli_real_escape_string($con,$newpers);
الدالة من اسمها يقوم بتقويم بعض الاخطاء سأشرح عملها ببساطة
أولاً: ماذا تعني كلمة escape برمجيا : هل تعلمين ما هي أحرف escape: كمثال عنها (, \n, \r, \, ', ", and Control-Z.)
من المعروف أنك عندما تضعين n\ في نص فكأنك تقولين أن ضمن انص انزل سطر بدأ من n\ وهكذا
وبالتالي إن كان لديك سلسلة نصية تحتوي على أحد هذه الأحرف فإن تمررها في توابع محددة مثل سلسلة نصية تستعمل كعامل اتصال Connection string سيؤدي بالتأكيد لحدوث مشاكل بالاتصال أو الاستعلام .
في مثالك :
لنفترض أن كلمة "newpers$ = "mohmammad's call في حال طلبها ضمن استعلام كمثال
select * from table1 where name="mohmammad's call"
بالتالي هناك علامة اقتباس مفتوحة ولم تغلق وبالتالي لم يتعرف معالج php على نهاية السلسلة النصية إذا تقوم هذه الدالة بحل هذه المعضلة
انظري هذا المثال
||***************************************************||
||بسم الله الذي لا يعلو على اسمه شيء في الارض ولا في السماء وهو العلي العظيم ||
||***************************************************||
|| اللهم إن لم يكن بك غضب علي فلا ابالي ||
||***************************************************||
في المنتديات العلمية استخدام التقييم
يرفع من قيمة الموضوع واهمية الرد
ببساطة الدالة تحمي اي متغير من ثغرات الـ Sql Injection
مثال بسيط على الSQL injection
لو حضرتك موجود متغير اسمه $name و عاوزة تبحثي في جدول المستخدمين عن اسم المستخدم للتحقق من وجوده
و لو فرضنا
$name= "hamdan' or 1 ='1";
اذن
الاستعلام سيكون عادة كالتالي
mysql_query("select * from users where name = '$name'");و باستبدال قيمة المتغير يصبح لدينا هذا الاستعلام الغريب !!!
mysql_query("select * from users where name = 'hamdan' or 1 ='1 '");بمعنى ان العائد سيكون دائماً TRUE
هذا سيسمح للمستخدم بالدخول للنظام بدون حتى ان يكون مسجل في الجدول فقط لان 1=1
لذلك نستخدم هذه الدالة لحماية المتغيرات من اي نصوص خبيثة
يوجد ايضا دالة اخرى mysql_real_scape_string