السلام عليكم
لماذا تستخدم isset في العبارات الشرطية مع ان الاستغناء عنها ممكن
مثلاً :
وكود:If (isset($func))
كلها تقوم بنفس العمل فما الفائدة ؟كود:If ($func)
وايضاً لماذا بعض الدوال تلحق بـ $_GET ؟
هل هناك فائدة امنية ام ماذا ؟
تحياتي
السلام عليكم
لماذا تستخدم isset في العبارات الشرطية مع ان الاستغناء عنها ممكن
مثلاً :
وكود:If (isset($func))
كلها تقوم بنفس العمل فما الفائدة ؟كود:If ($func)
وايضاً لماذا بعض الدوال تلحق بـ $_GET ؟
هل هناك فائدة امنية ام ماذا ؟
تحياتي
__________________
digitooth.com
حدّد هدفك .. وسر خلفه .. وأبشر بالنجاح
وعليكم السلام ورحمة الله وبركاته
بالنسبة للجزء الأول من السؤال
فهو سؤال جيد وكثير فعلاً لا يعرفون الفرق بين استخدام الإثنين
كود:$func = "text"; If (isset($func))كود:$func = 1; If (isset($func))في كل الحالات السابقة سوف ترجع الدالة ()isset قيمة trueكود:$func = false; If (isset($func))
كود:$func = "text"; If ($func)كود:$func = 1; If ($func)في الحالتين الأولى والثانية ترجع الدالة القيمة trueكود:$func = false; If ($func)
أما الحالة الثالثة ترجع القيمة false
أرجو أن أكون قد أوضحت الفرق
أما الجزء الثاني
عن استخدام GET_$
فهو لازم لاستقبال المتغيرات المرسلة عن طريق النماذج بطريقة GET أو المرسلة في رابط الملف
تحياتي
![]()
__________________
مدونتي
شكراً لك ..
لكن بالنسبة لـ get
سويت برمجية بحيث يستقبل القيمة المطلوبة في العنوان
http://www.digitooth.com/web/1.php?p=digitooth.com
وما احتجت لـ get لنفس المتغير داخل الملف .. حطيت المتغير مثل ماهو وشغال عال العال !
__________________
digitooth.com
حدّد هدفك .. وسر خلفه .. وأبشر بالنجاح
نعم هو شغال عال العال
لكن مش شرط يشتغل في كل الأحوال وعلى كل السيرفرات
بالاضافة الى كونها ثغرة برمجية
فالطريقة الصحيحة هي استقبال المتغير عن طريق المصفوفة GET_$
__________________
مدونتي
أخي ديجي .. هو ممكن يشتغل معك حتى لو لم تستخدم $_GET
بس عشان يتضح لك الفرق معك من فائدة استخدامها خذ المثال هذا لمتغير اسمه var$ مثلا .. ونريد طباعته فسنكتب
افرض أنك أرسلت قيمة var$ من خلال فورم معين وكانت طريقة الارسال هي $_POST .. فعندما تقول له يطبع قيمة المتغير بالشكل السابق سيطبعه ... سواء أكان المتغير مرسلا بطريقة بوست أو قيت .. لكن لو قام الزائر بتمرير قيمة للمتغير var$ عن طريق عنوان المتصفح .. فسيتم أيضا طباعتها حتى لو كان فيها ضرر على أمن الموقعكود PHP:
echo $var;
لذلك نستخدم الطريقة التالية
لنخبر البرنامج بأن يتجاهل أي متغير يحمل نفس الاسم من GET ويطبعه إذا كان قادما فقط بطريقة POSTكود PHP:
echo $_POST['var'];
وللطريقة الأخرى أيضا طرق يجب أخذها في الحسبان كي نتأكد من عدم تمريرها من الخارج
__________________
ومامن كاتب إلا سيفنى ****** ويبقي الدهر ماكتبت يداه
فلا تكتب بكفك غير شيء ****** يسرك يوم القيامة أن تراه
جزاكم الله الف الف خير
فعلاً فيها خطر امني كبير بصراحة توني استوعبه يوم جربت !
__________________
digitooth.com
حدّد هدفك .. وسر خلفه .. وأبشر بالنجاح
الدلة isset() وظيفتها التأكد أن المتغير موجود أم لا بغض النظر عن قيمتهالمشاركة الأصلية كتبت بواسطة ديجي توث
أما الطريقة التي وضعت بدون الدالة isset() لو تم ارسالة قيمة false لن تعمل جملة if اما لو كانت isset() موجودة ستعمل
لان الهدف من الدالة isset() هو كأنك تسأل هل المتغير موجود حالياً ام لا وايضا اذا كان المتغير NULL سترجع الدالة قيمة false
لكن مجرد وضع
معنى ذلك اذا كنت تريد أن يعمل الكود ترسل القيمة true اما اذا كنت لا تريد ان يعمل ترسل القيمة falseكود PHP:
if ($func)
والكلام السابق اذا كانت $func نوعها Boolean
اما اذا كان المتغير ليس Boolean لا فائدة من جملة if لانه بالنهاية سيعمل الكود دائما
وهو مختلف تماماً عن المقصد من وضع الدالة isset()
أرجو ان اكون أوضحت الفرق بين الأمرين![]()