[one]
[one_second][/one_second]
[one_second][/one_second]
[/one]
تتغير محتويات الموقع بناءاً على القيم التي يتم تمريرها للكود البرمجي وبالطبع هناك أنواع متعددة لهذه القيم مثل المتغيرات ( PHP Variables ), المصفوفات ( PHP Arrays ) والدوال ( PHP FUNCTIONS ). لكن كثيراً ما نحتاج في الموقع لإرسال قيم تم إدخالها بواسط مستخدم الموقع داخل نموذج ( HTML FORM ) مثل حقول اسم المستخدم Username أو كلمة المرور Password .
طرق إرسال القيمعند إضافة نموذج يجب إضافته بهذا الشكل
<form action="" method="get or post"> <!--حقول النموذج هنا --!> </form>بحيث يكون
( ACTION ) هو المسؤل عن إضافة المكان الذي سيتم استخدام هذه القيم به. وإذا كانت هذه القيم ستستخدم في نفس الملف, يترك فارغاً.
( METHOD ) هي طريقة إرسال القيم للمكان المحدد في action, ويجب استخدام get أو post داخل الـ ( HTML FORM METHOD ATTRIBUTE )
يتم إرسال قيم النموذج عن طريق تخصيصها إلى أي من المتغيرين ( PHP $_GET ) أو ( PHP $_POST ) , وهي من المتغيرات الفوق شاملة ( SUPER GLOBAL VARIABLES ) بحيث يتم تخزين كل name/value من النموذج ( HTML FORM ) داخل مصفوفة ترابطية ( PHP Associative Array ) ثم تخصيصها لـ ( PHP $_GET ) أو ( PHP $_POST ) . لذا يجب أن تكون على علم بطريقة الحصول علي القيم داخل المصفوفات المترابطة ( PHP Associative Array ) .
كيف يتم إرسال القيم؟نعرف أنه عند كتابة النماذج ( HTML FORM ) يتم إضافة الخاصية ( HTML FORM NAME ATTRIBUTE) هكذا
<form action="" method="get"> <input type="text" name="inputname" value=""> </form>لاحظ الخاصية ( HTML FORM NAME ATTRIBUTE) في السطر رقم 2 يأخذ القيمة inputname, هذه القيمة يتم تحويلها إلى متغير ( PHP VARIABLE ) يقوم بتخزين ما يقوم المستخدم بكتابته . والآن تخيل وجود أكثر من حقل داخل النموذج بهذا الشكل
<form action="" method="get"> First Name:<br> <input type="text" name="firstname" value=""><br> Last Name:<br> <input type="text" name="lastname" value=""><br><br> <input type="submit" value="Submit"> </form>في النموذج السابق يوجد حقلين إدخال ( HTML FORM INPUT ) يمكنان المستخدم من كتابة اسمه الأول firstname والاسم الأخير lastname.
الآن نتخيل أن المستخدم قام بكتابة اسمه الأول Mohamed واسمه الأخير Ahmed , فيكون firstname = Mohamed و lastname = Ahmed . وسيتم تخزين هذه القيم داخل مصفوفة ترابطية ( PHP Associative Array ) وتخصيصها لأي من ( PHP $_GET ) أو ( PHP $_POST ) حسب المستخدم منها داخل الخاصية ( HTML FORM METHOD ATTRIBUTE ).
بما أننا نستخدم ( PHP $_GET ) فستصبح المصفوفة بهذا الشكل
<?php $_GET = array ('firstname'=>"Mohamed" , 'lastname'=>"Ahmed"); ?>مثال بسيط :
<?php echo '<form action="" method="get"> First name:<br> <input type="text" name="firstname" value=""><br> Last name:<br> <input type="text" name="lastname" value=""><br><br> <input type="submit" value="Submit"> </form>'; // The value of the variable name is found if (isset ($_GET["firstname"],$_GET["lastname"]) ){ echo "<h1>Hello " . $_GET["firstname"] . "</h1>"."<br>"; echo "<h1>Your last name is " . $_GET["lastname"] . "</h1>"; } ?>شرح الكود
1- في السطر رقم 2 قمنا بعمل نموذج يتيح للمستخدم كتابة اسمه الأول والأخير
2- في السطرين 11,12 نريد استخدام القيم التي يدخلها المستخدم لعرض جملتي “Your last name is Ahmed”, “Hello Mohamed” . وهذا ما سيحدث عند ملئ الحقول والضغط على Submit .
لكن ماذا عن السطر رقم 10 ؟
سيقوم الكود السابق بمجرد تحميل الصفحة بتطبيق أمري الطباعة في السطرين 11,12 بشكل مباشر مع العلم أن المستخدم لم يقم بإدخال أي قيم وسيظهر خطأ بأن المتغيرات غير معرفة. لهذا استخدمنا جملة الشطر ( PHP IF STATEMENT ) في السطر رقم 10 للتأكد من أنه تم إدخال قيم للحقلين “firstname” , “lastname”. وتستخدم دالة مدمجة في ( PHP ) للتأكد من وجود قيم للمتغيرات وهي ( PHP ISSET ) .
إرسال المتغيرات باستخدام GETعند استخدام ( PHP $_GET ) لإرسال البيانات فسيتم ارسال البيانات من خلال رابط الصفحة التي سيتم استخدام البيانات بها. فعند تنفيذ الكود التالي
<?php echo '<form action="" method="get"> First Name:<br> <input type="text" name="firstname" value=""><br> Last Name:<br> <input type="text" name="lastname" value=""><br><br> <input type="submit" value="Submit"> </form>'; // The value of the variable name is found if (isset ($_GET["firstname"],$_GET["lastname"]) ){ echo "<h1>Hello ".$_GET["firstname"]."</h1>"; echo "<h1>Your last Name Is ".$_GET["lastname"]."</h1>"; } ?>ستكون النتيجة عرض جملتي “Your last name is Ahmed”, “Hello Mohamed” بالإضافة إلى ظهور قيم firstname , lastname في رابط الصفحة كما يظهر في الصورة
مثال آخر لتوضيح كيف يتم تخزين القيم داخل مصفوفة وسنقوم بالسماح للمستخدم بادخال اسم المستخدم وكلمة المرور ثم عرض هذه القيم وأيضاً عرض مصفوفة القيم.
<?php echo '<form action="" method="GET"> <label> اسم المستخدم :</label><br> <input type="text" name="username"><br> <label> كلمة المرور : </label><br> <input type="password" name="password"><br> <input type="submit" value="أدخل القيم"> </form>'; if (isset ($_GET["username"],$_GET["password"]) ){ foreach($_GET as $key=>$value) { echo $key.': '.$value.'<br>'; } print_r($_GET); } ?>شرح الكود
1- في السطر رقم 2 قمنا بعمل نموذج ( HTML Form ) وأضفنا السمة action بدون قيمة لأننا نريد استخدام قيم النموذج في نفس الصفحة, أيضاً أضفنا السمة ( HTML FORM METHOD ATTRIBUTE ) لتحديد طريقة إرسال القيم وهي ( PHP $_GET )
2- في الأسطر من 3 إلي 7 أنشأنا حقول النموذج اللازمة لإدخال وإرسال القيم
3- قمنا ببدء كود php لعمل حلقة تكرار لكل name/value داخل المصفوفة ( PHP $_GET ) باستخدام ( foreach as statement ) في السطر رقم 11
4- تقوم ( PHP FOREACH AS STATEMENT ) بالمرور داخل المصفوفة الترابطية ( PHP $_GET ) وتخصيص كل name إلى key$ وكل value إلى value$
5- في السطر 13 طلبنا طباعة echo القيم التي تم تخصيصها لكل من key$ و value$
6- في السطر رقم 15 قمنا باستخدام ( print_r ) مسبقة الإعداد في ( php ) والتي تقوم بعرض محتويات المتغيرات والمصفوفات والدوال بالطريقة التي يقرأها البشر
قم بتعبئة الحقول بحيث تكتب في اسم المستخدم mohamed وفي كلمة المرور 123456 ثم إضغط على “أدخل القيم” فتكون النتيجة هي
username: mohamed
password: 123456
Array ( [username] => mohamed [password] => 123456 )
وإذا نظرت إلى رابط الصفحة ستجد أنه تم تمرير المتغيرات إلى الرابط بهذا الشكل
http://localhost/test.php?username=mohamed&password=123456
لكن تمرير المتغيرات بهذه الطريقة غير مناسب في الحالات التي نريد أن نحتفظ بسرية المعلومات, لذا يجب استخدام ( PHP $_POST ).
إرسال المتغيرات باستخدام POSTتقوم POST بإرسال المتغيرات دون عرضها في الرابط بحيث لاتكون متاحة وتحتفظ بسريتها.
قم بتجربة الكود السابق ولكن عليك تغيير كل GET بـ POST ثم قم بتجربة الكود مرة أخري, ستجد أنه تم عرض نفس النتيجة السابقة ولكن بدون تمرير المتغيرات إلى رابط الصفحة. ويفضل معظم المبرمجين استخدام ( PHP $_POST ) .
أيضاً تستخدم POST عندما يكون حجم البيانات كبير وهذا ما لايتوفر عند استخدام ( PHP $_GET ).
إرسال القيم لملف خارجيتعلمنا طريقة إرسال القيم باستخدام كلاً من GET&POST إلى نفس الصفحة. ولكن في حالة إذا كنا نريد استخدام القيم في ملف خارجي, يتم كتابة مسار هذا الملف داخل السمة ( HTML FORM ACTION ATTRIBUTE ) عند تعريف النموذج ( HTML FORM ).
لاختبار ذلك قم بعمل ملف باسم test.php ثم انسخ به الكود التالي
<?php echo'<form action="submit.php" method="get"> <label> اسم المستخدم :</label> <input type="text" name="username"><br> <label> كلمة المرور : </label> <input type="password" name="password"><br> <input type="submit" value="أدخل القيم"> </form>'; ?>لاحظ في الكود السابق تم تحديد مسار الملف الذي نريد تمرير المتغيرات له وهو submit.php.
ثم قم بعمل ملف آخر باسم submit.php وانسخ به الكود التالي
<?php foreach($_GET as $key=>$value) { echo $key.': '.$value.'<br>'; } print_r($_GET) ?>وعند تشغيل الكود ستكون هذه هي النتيجة
لاحظ تم تمرير المتغيرات في رابط الصفحة المراد استخدام قيم المتغيرات بها وهي submit.php, بالطبع تم تمرير المتغيرات في الرابط لأننا نسنتخدم طريقة ( PHP $_GET ) .
لاختبار الأكواد يجب عليك تنصيب الخادم المحلي ( LOCAL SERVER ) ثم وضع الملفات داخل مجلد htdocs