ط§ط*ظ…ظٹ ط¨ط±ظ…ط¬ظٹط§طھظƒ ظˆ ط³ظƒط±ط¨طھط§طھظƒ ط¨ط£ظپط¶ظ„ ط§ظ„ط·ط±ظ‚ .. ظˆ ظ‚ظ„ ظˆط¯ط§ط¹ط§ ظ„ظ„ط§ط®طھط±ط§ظ‚ط§طھ !



بسم الله الرحمن الرحيم

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

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&#91;'id'&#93){echo"not allowed";}
else{echo
"welcome";}
</code> </code>

هنا قلتله , اذا المستخدم لم يقم بتعيين قيمة للـ id في الـ get , اطبع له not allowed بمعنى غير مسموح , و اذا لم يتحقق الشرط , اطبع له welcome ,,

طيب ماذا لو المستخدم وضع نطاق غير موجود في القاعدة ؟ &quot; محذوف مثلاً او لم يتم اضافته &quot; , تأتي الآن دور الدالة mysql_num_rows

رمز PHP:
<code style="white-space:nowrap"> <code> $query="select * from domains where did = $_GET&#91;id&#93; ";
$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&#91;'id'&#93){echo"not allowed";}
else{echo
"welcome";}
</code> </code>

هنا قلناله ، اذا كان المستخدم قام بوضع قيمة الـ id اعرض له not allowed طبعا يكثر استخدامها مع وضع علامة التاثر قبلها (!)

بالشكل هذا

رمز PHP:
<code style="white-space:nowrap"> <code> if(!isset($_GET&#91;'id'&#93){echo"not allowed";}
else{echo
"welcome";}
</code> </code>

]




هنا قمنا بنفس وظيفة الدالة empty

يوجد فرق بسيط بينهم لاحظته ولست متاكد منه ، هو اننا اذا وضعنا نفس الشرط بالـ empty و الـ isset

اذا وضعت do= ولم تضع لها قيمة ، دالة Isset ستعتبرك قد قمت بادخال قيمة , اما دالة empty لن تعتبرك أدخلت قيمة الا بعد وضعك لقيمة سليمة بعد علامة الـ يسوي

نأتي لـ دالتين انا شخصياً استخدمهم سوا مع بعض وما قد استخدمت واحدة لحالها ، فـ راح اشرح طريقةهم سوا ,,

هما الدالتين : strip_tags() و mysql_real_escape_string() ,

طيب وش فائدتهم ؟

الدالة الاولى Strip_tags تقوم بـ حذف الـ سلاشز &quot; / &quot; من القيمة التي توضع داخل البارمتر ,
أما الدالة الثانية لـ حذف وسوم الـ html برضو من القيمة الي داخل البارمتر .
فـ يكثر استخدامهم في أوامر الـ sql طبعاً ,

و هذا مثال على الاستخدام

رمز PHP:
<code style="white-space:nowrap"> <code> $query1="insert into auctions values('".mysql_real_escape_string( strip_tags($_POST&#91;dd&#93)."','".mysql_real_escape_string( strip_tags($_POST&#91;T1&#93)."','".mysql_real_escape_string( strip_tags($_POST&#91;T2&#93)."','".mysql_real_escape_string( strip_tags($_POST&#91;R1&#93)."','".mysql_real_escape_string( strip_tags($_POST&#91;T3&#93)."','".mysql_real_escape_string( strip_tags($_POST&#91;R2&#93)."')";
</code> </code>

اظني واضح الاستخدام صووح ؟

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

تحياتي للجميع و اتمنى ان كان فيه أي خطأ لاحد يقسو علي , وضحولي اذا فيه خطأ , و إن شاء الله أنه مافيه أخطاء ,,

سلام عليكم ,









©المشاركات المنشورة تعبر عن وجهة نظر صاحبها فقط، ولا تُعبّر بأي شكل من الأشكال عن وجهة نظر إدارة المنتدى©