بسم الله الرحمن الرحيم
في إطار بحثي عن طرق متقدمة لـ حماية سكربت أعمل على برمجته حالياً ,, وصلت لطرق جيدة في حماية المدخلات في السكربتات و اوامر قواعد البيانات , و طرق لوضع احتمالية محاولة المستخدم للتخطي و غيره ,, و حبيت اني ما أبخل بها على الاخوان ,,
1- intval
ماهي فائدة هذه الدالة و متى يتم استخدامها ؟
يتم استخدام هذه الدالة في حالة إجبار المستخدم على استخدام أرقام , كـ مثال في تعدد الصفحات او الـ id الخاص بالمواضيع و ملفات الأعضاء ,
طريقة الاستخدام سهلة , تضع intval() قبل القيمة , شوف المثال عشان تتضح الصورة ,
مثال على الاستخدام
هالمثال اقتبسته من سكربت قاعد أبرمجه الحين , وهو لدي جدول بالنطاقات " الدومينات " و يتم عرضها عبر صفحة auction.php , بالطريقة هذه
auction.php?id=1
طيب ماذا لو وضع المستخدم id=hossam مثلا ,, هنا تأتي وظيفة الدالة intval
رمز PHP:
<code style="white-space:nowrap"> <code> echo intval('hossam');
</code> </code>
سيقوم بإخراج القيمة صفر

,, طبعاً هالشي مفيد في حالة ان المخترق وضع طريقة أو اخرى لـ يستطيع جلب معلومات غير مرغوبة من القاعدة عبر الـ get في المتصفح , لان الـ get قيمة سهل التغيير فيها ,
طيب نأتي الآن لـ طريقة ثانية ، ماذا لو المستخدم لم يضع قيمة للـ get اصلا
auctions.php?get= أو auctions.php فقط ,
تأتي الآن وظيفة الدالة empty , و طريقة استخدامها بسيطة ، تضعها داخل شرط , بالشكل التالي
رمز PHP:
<code style="white-space:nowrap"> <code>
if(empty($_GET['id']
){echo"not allowed";}
else{echo"welcome";}
</code> </code>
هنا قلتله , اذا المستخدم لم يقم بتعيين قيمة للـ id في الـ get , اطبع له not allowed بمعنى غير مسموح , و اذا لم يتحقق الشرط , اطبع له welcome ,,
طيب ماذا لو المستخدم وضع نطاق غير موجود في القاعدة ؟ " محذوف مثلاً او لم يتم اضافته " , تأتي الآن دور الدالة mysql_num_rows
رمز PHP:
<code style="white-space:nowrap"> <code> $query="select * from domains where did = $_GET[id] ";
$result= mysql_query($query,$con);
if( mysql_num_rows($result) == 0)
{
echo "غير مسموح";}
</code> </code>
الدالة هذه , مسؤولة عن إخراج قيمة رقمية تساوي عدد الصفوف التي تم استخراجها من قاعدة البيانات في إستعلام معين ,
ففي المثال المذكور , فيه استعلام يقوم باخراج كل البيانات من جدول domains بشرط أن يكون الـ id = الرقم الموضوع في الـ Get Id , طيب لو كان الـ Id غير موجود ؟ طبيعي ان النتيجة راح تكون صفر , فـ هنا قلناله اذا عدد الصفوف المستخرجة = صفر , اطبع له غير مسموح ,
سهلة صح

؟
الآن نأتي لـ دالة مشابهة لـ عمل الدالة empty ولكنها معاكسة لها , وهي isset
طريقة الاستخدام
رمز PHP:
<code style="white-space:nowrap"> <code>
if(isset($_GET['id']
){echo"not allowed";}
else{echo"welcome";}
</code> </code>
هنا قلناله ، اذا كان المستخدم قام بوضع قيمة الـ id اعرض له not allowed

طبعا يكثر استخدامها مع وضع علامة التاثر قبلها (!)
بالشكل هذا
رمز PHP:
<code style="white-space:nowrap"> <code>
if(!isset($_GET['id']
){echo"not allowed";}
else{echo"welcome";}
</code> </code>
]
هنا قمنا بنفس وظيفة الدالة empty
يوجد فرق بسيط بينهم لاحظته ولست متاكد منه ، هو اننا اذا وضعنا نفس الشرط بالـ empty و الـ isset
اذا وضعت do= ولم تضع لها قيمة ، دالة Isset ستعتبرك قد قمت بادخال قيمة

, اما دالة empty لن تعتبرك أدخلت قيمة الا بعد وضعك لقيمة سليمة بعد علامة الـ يسوي
نأتي لـ دالتين انا شخصياً استخدمهم سوا مع بعض وما قد استخدمت واحدة لحالها ، فـ راح اشرح طريقةهم سوا ,,
هما الدالتين : strip_tags() و
mysql_real_escape_string() ,
طيب وش فائدتهم ؟
الدالة الاولى Strip_tags تقوم بـ حذف الـ سلاشز " / " من القيمة التي توضع داخل البارمتر ,
أما الدالة الثانية لـ حذف وسوم الـ html برضو من القيمة الي داخل البارمتر
.
فـ يكثر استخدامهم في أوامر الـ sql طبعاً ,
و هذا مثال على الاستخدام
رمز PHP:
اظني واضح الاستخدام صووح

؟
إلى هنا انتهى درس مفصلي البسيط , و اعذروني على رداءة الشرح طريقة فـ أنا مبرمج مبتدئ و تعلمت هالأشياء في سكربت أنا أبرمجه حالياً , و قلت أفيد الناس باللي تعلمته ,,
تحياتي للجميع و اتمنى ان كان فيه أي خطأ لاحد يقسو علي , وضحولي اذا فيه خطأ , و إن شاء الله أنه مافيه أخطاء

,,
سلام عليكم ,