نظرة سريعة على مجريات يوم سوالف
الفائزون في المسابقة الأصغر لسوالف كاست

 

العودة   سوالف سوفت > قسم تطوير وبرمجة المواقع للمتقدمين > PHP
المدوّنات البحث مشاركات اليوم اجعل كافة المشاركات مقروءة

رد
 
LinkBack أدوات الموضوع
عضو نشيط جدا
تاريخ التسجيل: May 2006-
#1 (permalink)  
isset - $_GET .. سؤال


السلام عليكم

لماذا تستخدم isset في العبارات الشرطية مع ان الاستغناء عنها ممكن

مثلاً :
كود:
If (isset($func))
و
كود:
If ($func)
كلها تقوم بنفس العمل فما الفائدة ؟

وايضاً لماذا بعض الدوال تلحق بـ $_GET ؟

هل هناك فائدة امنية ام ماذا ؟

تحياتي






__________________
digitooth.com
حدّد هدفك .. وسر خلفه .. وأبشر بالنجاح
ديجي توث غير متواجد حالياً   قديم 02-08-2006, 08:26 AM
رد مع اقتباس
عضو فعال
تاريخ التسجيل: Apr 2002-
#2 (permalink)  

وعليكم السلام ورحمة الله وبركاته

بالنسبة للجزء الأول من السؤال
فهو سؤال جيد وكثير فعلاً لا يعرفون الفرق بين استخدام الإثنين

كود:
$func = "text";
If (isset($func))
كود:
$func = 1;
If (isset($func))
كود:
$func = false;
If (isset($func))
في كل الحالات السابقة سوف ترجع الدالة ()isset قيمة true

كود:
$func = "text";
If ($func)
كود:
$func = 1;
If ($func)
كود:
$func = false;
If ($func)
في الحالتين الأولى والثانية ترجع الدالة القيمة true
أما الحالة الثالثة ترجع القيمة false

أرجو أن أكون قد أوضحت الفرق


أما الجزء الثاني
عن استخدام GET_$
فهو لازم لاستقبال المتغيرات المرسلة عن طريق النماذج بطريقة GET أو المرسلة في رابط الملف

تحياتي






__________________
mahmoud009 سابقاً
منتدى بي اتش بي
فِكرة لتقنية المعلومات
فِكرة غير متواجد حالياً   قديم 02-08-2006, 03:29 PM
رد مع اقتباس
عضو نشيط جدا
تاريخ التسجيل: May 2006-
#3 (permalink)  

شكراً لك ..

لكن بالنسبة لـ get

سويت برمجية بحيث يستقبل القيمة المطلوبة في العنوان

http://www.digitooth.com/web/1.php?p=digitooth.com
وما احتجت لـ get لنفس المتغير داخل الملف .. حطيت المتغير مثل ماهو وشغال عال العال !






__________________
digitooth.com
حدّد هدفك .. وسر خلفه .. وأبشر بالنجاح
ديجي توث غير متواجد حالياً   قديم 02-08-2006, 05:46 PM
رد مع اقتباس
عضو فعال
تاريخ التسجيل: Apr 2002-
#4 (permalink)  

نعم هو شغال عال العال
لكن مش شرط يشتغل في كل الأحوال وعلى كل السيرفرات
بالاضافة الى كونها ثغرة برمجية

فالطريقة الصحيحة هي استقبال المتغير عن طريق المصفوفة GET_$






__________________
mahmoud009 سابقاً
منتدى بي اتش بي
فِكرة لتقنية المعلومات
فِكرة غير متواجد حالياً   قديم 02-08-2006, 06:58 PM
رد مع اقتباس
عضو فعال
تاريخ التسجيل: Feb 2002-
#5 (permalink)  

أخي ديجي .. هو ممكن يشتغل معك حتى لو لم تستخدم $_GET
بس عشان يتضح لك الفرق معك من فائدة استخدامها خذ المثال هذا لمتغير اسمه var$ مثلا .. ونريد طباعته فسنكتب

كود PHP:
echo $var
افرض أنك أرسلت قيمة var$ من خلال فورم معين وكانت طريقة الارسال هي $_POST .. فعندما تقول له يطبع قيمة المتغير بالشكل السابق سيطبعه ... سواء أكان المتغير مرسلا بطريقة بوست أو قيت .. لكن لو قام الزائر بتمرير قيمة للمتغير var$ عن طريق عنوان المتصفح .. فسيتم أيضا طباعتها حتى لو كان فيها ضرر على أمن الموقع
لذلك نستخدم الطريقة التالية
كود PHP:
echo $_POST['var']; 
لنخبر البرنامج بأن يتجاهل أي متغير يحمل نفس الاسم من GET ويطبعه إذا كان قادما فقط بطريقة POST

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






__________________
ومامن كاتب إلا سيفنى ****** ويبقي الدهر ماكتبت يداه
فلا تكتب بكفك غير شيء ****** يسرك يوم القيامة أن تراه
Dr.Server غير متواجد حالياً   قديم 02-08-2006, 11:40 PM
رد مع اقتباس
عضو نشيط جدا
تاريخ التسجيل: May 2006-
#6 (permalink)  

جزاكم الله الف الف خير
فعلاً فيها خطر امني كبير بصراحة توني استوعبه يوم جربت !






__________________
digitooth.com
حدّد هدفك .. وسر خلفه .. وأبشر بالنجاح
ديجي توث غير متواجد حالياً   قديم 03-08-2006, 10:29 PM
رد مع اقتباس
عضو سوبر نشيط
تاريخ التسجيل: Jan 2002-
#7 (permalink)  

اقتباس:
المشاركة الأصلية كتبت بواسطة ديجي توث
السلام عليكم

لماذا تستخدم isset في العبارات الشرطية مع ان الاستغناء عنها ممكن

مثلاً :
كود:
If (isset($func))
و
كود:
If ($func)
كلها تقوم بنفس العمل فما الفائدة ؟

وايضاً لماذا بعض الدوال تلحق بـ $_GET ؟

هل هناك فائدة امنية ام ماذا ؟

تحياتي
الدلة isset() وظيفتها التأكد أن المتغير موجود أم لا بغض النظر عن قيمته

أما الطريقة التي وضعت بدون الدالة isset() لو تم ارسالة قيمة false لن تعمل جملة if اما لو كانت isset() موجودة ستعمل

لان الهدف من الدالة isset() هو كأنك تسأل هل المتغير موجود حالياً ام لا وايضا اذا كان المتغير NULL سترجع الدالة قيمة false

لكن مجرد وضع
كود PHP:
if ($func
معنى ذلك اذا كنت تريد أن يعمل الكود ترسل القيمة true اما اذا كنت لا تريد ان يعمل ترسل القيمة false

والكلام السابق اذا كانت $func نوعها Boolean

اما اذا كان المتغير ليس Boolean لا فائدة من جملة if لانه بالنهاية سيعمل الكود دائما

وهو مختلف تماماً عن المقصد من وضع الدالة isset()

أرجو ان اكون أوضحت الفرق بين الأمرين






__________________
مواقع العمل للإسلام
http://www.islam.ws
للمراسلة
http://php4pro.arabform.com
حل مشكلة العربي في phpMyAdmin
http://www.swalif.net/softs/showthread.php?t=172401
php4pro غير متواجد حالياً   قديم 06-08-2006, 04:42 PM
رد مع اقتباس
رد


أدوات الموضوع

تعليمات المشاركة
لا تستطيع كتابة مواضيع
لا تستطيع كتابة ردود
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

كود [IMG] متاحة
كود HTML معطلة
Trackbacks are متاحة
Pingbacks are متاحة
Refbacks are متاحة



الساعة الآن: 12:17 AM بتوقيت المملكة العربية السعودية