دروس متقدمة في برمجة البي اتش بي 2:
تحدثنا في الدرس السابق عن كيفية استعمال نماذج لغة ال اتش تي ام ال لارسال المعلومات من النموذج الى السكربت, و قد قمت بشرح طريقة استعمال التعابير المستخدمة لانشاء النموذج و الادوات التي تريد استخدامها في النموذج.
الان و في هذا الدرس سوف اتحدث عن كيفية استقبال المعلومات المرسلة من النموذج و كيفية التأكد من انها تحتوي علي قيمة و غيرها من الامور:
ربما كنت قد سمعت في احدى لغات البرمجة الاخرى غير البي اتش بي عن سهولة احضار المعلومات المرسلة من النموذج باستخدام متغيرات تسمى بال Global variables
و هي المتغيرات الشاملة التي يمكن استخدامها في جميع السكربتات الموجودة لديك لكن يمكن استعمالها في السكربت الذي تم استقبل المعلومات. فمثلا في لغة ال ASP
الطريقة سهلة باستخدام متغيرات ال REQUEST.QueryString لل GET و Request.Form لل POST.
الطريقة المستخدمة في لغة البي اتش بي تعادل سهولة طرق اللغات الاخرى و الطرق هي كالتالي:
$_GET:
اتوقع انك عرفت لم تستعمل هذا المتغير اذا تابعت الدرس الماضي. يستخدم هذا المتغير لاحضار معلومات النموذج اذا كنت قد اعطيت قيمةGET
لل Method في تعبير النموذج
<form method=”GET”>
و هذا المتغير هو مصفوفة تقوم بحفظ جميع القيم داخلها باستخدام اسم الاداة التي تحتوي على القيمة في النموذج كمفتاح لاحضار القيمة من المصفوفة.
و قد ذكرت في الدرس الماضي انه يجب علينا اعطاء اسم لكل اداة اذا اردنا ان نقوم باحضار القيمة من تلك الاداة و السبب يرجع الي ما قلته عن المصفوفة و مفتاح القيمة.
الان دعونا نقوم بكتابة مثال للتجريب:
ساقوم ببناء نموذج يطلب من زائر الموقع بتزويد الموقع باسمه و يقوم السكربت بعرض جملة ترحيبية:
في ملف اسمه
Form.html
ضع الكود التالي
<form method=”GET” action=”index.php”> <table border=1 cellspacing=0> <tr><td>الرجاء ادخال اسمك في الفراغ</td><td><input type=”text” name=”myname”></td></tr> <tr><td colspan=2><input type=”submit” value=”عرض”></td></tr> </table> </form>
و في ملف ال
Index.php
ضع الكود التالي:
echo “مرحبا بك يا”.$_GET[“myname”];
لاحظ ان المفتاح المستخدم لاحضار القيمة من المصفوفة هي اسم اداة مربع النص الذي يدخل المستخدم اسمه فيه.
طبعا من الدرس الماضي اذا قمت بتجربة هذا السكربت تكون قد لاحظت ان اسم الدالة قد تم اضافتها الى رابط الموقع في متصفحك.
www.mywebsite.com/index.php?myname=rakan
الان مع ال $_POST:
و هذه مصفوفة اخرى تستعملها لاحضار القيم من الادوات في النموذج اذا كانت طريقة ارسال المعل ومات من النموذج هي POST
و تستخدم بنفس الطريقة التي تستخدم فيها GET
لنقم بكتابة المثال الماضي بطريقة ال POST
في ملف اسمه
Form.html
ضع الكود التالي
<form method=”POST” action=”index.php”> <table border=1 cellspacing=0> <tr><td>الرجاء ادخال اسمك في الفراغ</td><td><input type=”text” name=”myname”></td></tr> <tr><td colspan=2><center><input type=”submit” value=”عرض”></center></td></tr> </table> </form>
و في ملف ال
Index.php
ضع الكود التالي:
echo “مرحبا بك يا”.$_POST[“myname”];
لكن هذه المرة لن تكون القيم على الرابط في متصفحك فكما ذكرنا ال POST
تخفي المعلومات عن زائر الموقع بحيث يتنقل بين صفحة و اخرى بدون ان يلاحظ كيفية ارسال المعلومات بين هذه الصفحات.
كيفية التأكد من ان المتغيرات في المصفوفة تحتوي على قيمة:
معضم المبرجين من مختلف اللغات يحبون ان يقوموا بالتـأكد من ان بعض القيم المدخلة من قبل المستخدم ليست فارغة او صحيحة.
فمثلا قد تريد ان تقوم بالتأكد من ان البريد الالكتروني للزائر وضع بالشكل الصحيح كالتالي:
name@domain.com
و هنا تاتي مهمة دوال موجودة في البي اتش بي لفصح المعلومات:
Isset(variable)
هذه الدالة تقوم بارجاع قيمة True
اذا كان المتغير يحتوي على قيمة و False اذا كان المتغير فارغا.
if(isset($_GET[“myname”]))
{
echo “لم يقم الزائر بادخال اسمه في حقل الاسم”;
{Is_numeric(string)
و تستعمل هذه للتأكد من ان القيمة التالية تحتوي على ارقام فقط. و سوف تقوم بارجاع True اذا كانت القيمة المدخلة رقمية او False اذا كانت القيمة غير رقمية.
$MyPhoneNum = 009626546546546546465454
if(is_numeric($MyPhoneNum))
{
echo “القيمة رقمية”;
}
else
{
echo “القيمة ليست رقمية”;
}strpos(Text,CharToFind)
تقوم هذه الدالة بارجاع قيمة مماثلة لل False اذا لم يتم ايجاد الحرف اما اذا تم ايجاده فتقوم الدالة بارجاع رقم اول حرف في الكلمة داخل النص. حيث ان Text
هو النص الذي تريد ان تبحث في داخله.
و CharToFind هو الحرف الذي تريد ان تبحث عنه داخل النص.
$MyEmail = “Rakan@MyDomain.com”
if(strpos($MyEmail,”@”)===false)
{
echo “الريد الالكتروني لا يحتوي على اشارة @”;
}مثال على ما تعلمناه:
ضع هذا الكود في ملف اسمه
Form.html
<form method="POST" action="index.php"> <table border=1 cellspacing=0> <tr><td>ادخل اسمك</td><td><input type="text" name="myname"></td></tr> <tr><td>ادخل بريدك الالكتروني</td><td><input type="text" name="myemail"></td></tr> <tr><td colspan=2><center><input type="submit" value="ارسل"></center></td></tr> </table> </form>
و هذا كود ملف ال
Index.php
<?
$MyName = $_POST["myname"];
$MyEmail = $_POST["myemail"];
if(isset($MyName))
{
//المتغير يحتوي على قيمة
echo "hi ".$MyName."! how are you?";
}
else
{
//المتغير لا يحتوي على قيمة
echo "Hello stranger. Please enter your name";
}
if(isset($MyEmail))
{
if(strpos($MyEmail,"@"))
{
echo "Your email is right";
}
else
{
echo "Please enter your email address in the form of me@mydomain.com";
}
}
else
{
echo "Please go back and provide your email address";
}
