21-09-12, 11:11 PM
بسم الله الرحمن الرحيم
الدرس الثالث :
الدرس الثالث :
ملاحظة :
اعزائي اذا نريد تعريف نوع المتغير في php فهكذا يتم تعريف المتغير ....
PHP كود :
$x=(integer)5;
لانني في الدرس الثاني أخطات بها نرجو المعذرة
----------------------------------------------------------------
Form Attributes (خصائص النموذج ) :
1- action attribute :
وظيفة هذه الخاصية اخبار الخادم ( server) أي صفحة او سكريبت (script ) سيستقبل البيانات (data) من النموذج (form)
PHP كود :
<form action="handle_form.php">
ففي المثال السابق تقوم الصفحة المسماة باسم handle_form.php باستقبال البيانات من النموذج ومعالجتها.
ولاحظ هنا بالمثال اننا ذكرنا اسم الصفحة مباشرة بدون ذكر امتداد الصفحة وذلك لان جميع الصفحات موجودة بمجلد واحد داخل مجلد www ولكن اذا لم تكن الصفحة المعالجة التي ستسقبل البيانات من النموذج موجودة بنفس ذاك المجلد فلابد من ذكر المسار كاملاً.
ملاحظة:
ولاتنسوا ان جميع الصفحات لابد ان تكون بداخل مجلد www سواء مباشرة او داخل مجلد داخل www المهم تكون داخل
www.
2- method attribute
ووظيفة هذه الخاصية للنموذج اخبار الخادم بكيفية ارسال بيانات النموذج الى السكريبت المعالج (الصفحة المعالجة) handling script
مثال :
PHP كود :
<form method="post" action="handle_form.php">
وهناك طريقتين من طرق الارسال:
1-Ger method:
وهنا يتم ارسال بيانات النموذج ملحقة كجزء من URL)UNIFORM RESOURCE LOCATOR)
2- Post nethod:
وهنا يتم ارسال البيانات بشكل مخفي بشكل سري أي ان المستخدم لايستطيع مشاهدة بيانات النموذج المرسلة وهنا بهذه الطريقة نحصل على سرية وامان اكثر.
اذاً متى نستخدم الطريقة وعلى أي اساس نختار الطريقة المناسبة:
1- يفضل استخدام الطريقة الاولى في حالات كون بيانات النموذج المرسلة قليلة ومحدودة.
2- لايفضل استخدام الطريقة الاولى في حال كون البيانات المرسلة سرية جدا مثل pasword.
3- الصفحة الناتجة من نموذج يستخدم الطريقة الاولى تكون قابلة للحفظ بالمفضلة bookmarked
بينما لايمكن ذلك في حال استخدام الطريقة الثانية.
استقبال بيانات النموذج :
يتم تفعيل (triggered) لل php script بعد الضغط على زر submit ففي هذه الحالة وبعد الضغط على زر الارسال submit تقوم الصفحة المعالجة والموجودة في خاصية action كما ذكرنا سابقا باستقبال بيانات النموذج ومعالجتها
عرض الأخطاء(displaying errors):
بإمكانك السماح لخاصية عرض الخطأ بالتفعيل وذلك يفيد في عرض الاخطاء لديك ببرنامجك وذلك عن طريق استخدام الدالة ini_set
مثال:
PHP كود :
ini_set('display_errors',1);
الرقم واحد في المثال السابق يشير الى ان خاصية عرض الاخطاء فعالة بينما لو قمت بوضع القيمة صفر فانك بذلك تلغي فعالية عرض الاخطاء ببرنامجك وهذا يفيدك احيانا في حال كون الخطا الناتج عبارة عن تحذير (warning ) وليس خطأ كبير .
تلاحظ أننا بالامثلة السابقة لم نقم بتخزين المتغيرات بداخل مصفوفة post وذلك لان خاصية register_global=on ولكي تعرف ان هذه الخاصية فعالة ام لا يمكنك الاطلاع على اعدادت php من خلال دالة :
PHP كود :
phpinfo();
اي انه لو كانت الخاصية فعالة تستطيع php تمرير متغيرات وبيانات النموذج بشكل سليم وصحيح
ولكن اذا كانت الخاصية register_global=off اي انها غير فعالة ففي هذه الحالة لابد من استخدام طريقة حفظ المتغيرات بداخل مصفوفة post والتي ستكون واضحة لكم بالمثال :
الصفحة المحتوية على نموذج يطلب منك ادخال اسمك الاول فقط :
PHP كود :
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<title>Hello, World!</title>
</head>
<body>
<form method="post" action="handle_form.php">
<input type="text" name="first_name" value="your first name"/>
</form>
</body>
</html>
الصفحة التي تعالج بيانات النموذج ويكون اسمها handle_form.php
PHP كود :
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<title>Your Forum Posting</title>
</head>
<body>
<?php // Script 5.3 - handle_post.php - second version after Script 5.2
// Address error handing.
ini_set ('display_errors', 1);
error_reporting (E_ALL & ~E_NOTICE);
// In case register_globals is disabled.
$name = $_POST['first_name'];
// Print the message.
print "Thank you, $name, for your posting:<br />
";
?>
</body>
</html>
يتضح لك من المثال السابق اننا قمنا بتخزين المتغير name بداخل المصفوفةpost وذلك لان خاصية register_global غير فعالة واريدك ان تنتبه ان index للمصفوفةpost لابد ان يكون اسم input text
اي انه في مثالنا اسم input text هو first_name..
ولكن لو كانت خاصية register_global فعالة فلا نقوم بتخزين المتغير name بداخل المصفوفة post ولكن انبهك هنا فمثلا لاحظ بالصفحة التي تحتوي النموذج لقد قمنا بتسمية input text باسم first_name ففي هذه الحالة سيكون مثالنا كالتالي اي اننا نقوم بطباعة المتغير والذي يكون اسمه هو نفس اسم input text :
PHP كود :
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<title>Your Forum Posting</title>
</head>
<body>
<?php // Script 5.3 - handle_post.php - second version after Script 5.2
// Address error handing.
ini_set ('display_errors', 1);
error_reporting (E_ALL & ~E_NOTICE);
// In case register_globals is enabled.
// Print the message.
print "Thank you, $first_name, for your posting:<br />
";
?>
</body>
</html>
PHP كود :
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<title>Your Forum Posting</title>
</head>
<body>
<?php // Script 5.3 - handle_post.php - second version after Script 5.2
// Address error handing.
ini_set ('display_errors', 1);
error_reporting (E_ALL & ~E_NOTICE);
// In case register_globals is disabled.
$name = $_POST['first_name'];
// Print the message.
print "Thank you, $name, for your posting:<br />
";
?>
</body>
</html>
يتضح لك من المثال السابق اننا قمنا بتخزين المتغير name بداخل المصفوفةpost وذلك لان خاصية register_global غير فعالة واريدك ان تنتبه ان index للمصفوفةpost لابد ان يكون اسم input text
اي انه في مثالنا اسم input text هو first_name..
ولكن لو كانت خاصية register_global فعالة فلا نقوم بتخزين المتغير name بداخل المصفوفة post ولكن انبهك هنا فمثلا لاحظ بالصفحة التي تحتوي النموذج لقد قمنا بتسمية input text باسم first_name ففي هذه الحالة سيكون مثالنا كالتالي اي اننا نقوم بطباعة المتغير والذي يكون اسمه هو نفس اسم input text :
PHP كود :
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<title>Your Forum Posting</title>
</head>
<body>
<?php // Script 5.3 - handle_post.php - second version after Script 5.2
// Address error handing.
ini_set ('display_errors', 1);
error_reporting (E_ALL & ~E_NOTICE);
// In case register_globals is enabled.
// Print the message.
print "Thank you, $first_name, for your posting:<br />
";
?>
</body>
</html>
متغيب

