التأكد من صحة بيانات المستخدم المرسلة عبر النماذج(3)
صفحة 1 من اصل 1
التأكد من صحة بيانات المستخدم المرسلة عبر النماذج(3)
سنكمل في هذا الدرس ما بدأناه في الدرس السابق:
لنبدأ الن بالشرح:
الطريقة " isAlpha"
أحيانا نحتاج أن تكون القيمة عبارة عن صيغة نصية محددة, لذلك نبني أولا التابع " isAlpha" الذي يفحص فيما إذا كانت جميع محارف القيمة هي أحرف و بعد ذلك نبني بمثل هذه الطريقة تابع يفحص إذا ما كانت القيمة المدخلة هي عنوان بريد الكتروني ممكن
الطريقة " isEmailAddress":
تفحص هذه الطريقة القيمة إذا ما كانت عنوان بريد الكتروني صحيح أم لا .
الطريقة " isError"
تستخدم هذه الطريقة لتدلنا فيما إذا نتج لدي أخطاء نتيجة إدخالات المستخدم و بعد فحص البيانات بالطرق السابقة و هي تقوم بفحص طول المصفوفة "" فإذا كان اكبر من الواحد فهذا يعني أن خطأ ما قد حدث .
الطريقة " getErrorList"
بعد أن كتبنا الطريقة " isError" التي دلتنا على حدوث خطأ ما نكتب الطريقة التالية التي تقوم بالحصول على الأخطاء الناتجة و ذلك بإرجاعها للمصفوفة "$_errorList" الحالية .
الطريقة " resetErrorList"
تقوم هذه الطريقة بتهيئة مصفوفة الأخطاء "$_errorList" أي جعلها فارغة لا تحتوي أية قيمة كالتالي:
الباني " constructor"
الباني هو عبارة عن قسم من الصف بحيث يتم تنفيذه عند التصريح عن الصف و في حالتنا هذه يجب وضع التابع resetErrorList" ضمن التابع الباني ليقوم بتهيئة مصفوفة الأخطاء عند التصريح عن الصف و يكون الباني عبارة عن تابع له نفس اسم الصف على الشكل التالي:
[b]مثال شامل[/b]
لا بد انك قد مللت من الصف و تريد اختباره و رؤية عمله لذلك سنقوم الآن ببناء مثال سريع بلغة HTML بحيث تحتوي على حقول يدخلها المستخدم ثم نكتب برنامج بلغة PHP لاستدعاء الصف و تنفيذه على النموذج المبني .
سيحتوي هذا النموذج على حقول يدخلها المستخدم كالتالي:
الاسم , العمر , المدينة و يختارها من قائمة منسدلة , الهوايات و يمكنه اختيار أكثر من هواية .
يمكنك تحميل الصفحة و تحمل الاسم fv_1.html ( الموجودة في نهاية هذا الدرس ) .
عند فتح الصفحة تحصل على الشكل :
طبعا الصفحة مكتوبة بلغة HTML (البعض لا يحلو له أن يسميها لغة !!!) و سنقوم بشرح أهم ما استخدمناه في النموذج.
أهم نقاط صنع النموذج
.) عند تنفيذ الحدث سيتم استدعاء الصفحة " processor.php" و نستخدم الطريقة Post في الحصول على البيانات من الحقول :
.) حقل الاسم هو عبارة عن مربع ادخال نصي بطول 15 :
.) تحديد الجنس ذكر أو أنثى من خلال صناديق الاختيار "Radiobox" :
.) تحديد المدينة من خلال قائمة منسدلة كالتالي:
.) تحديد الهوايات من خلال وضع إشارة صح "Checkbox":
.) وضع زر حفظ يأخذ البيانات :
كتابة البرنامج :
الآن سنقوم بكتابة البرنامج بلغة PHP و الذي سيقوم بتعريف غرض من الصف الذي قمنا ببنائه , و من ثم الاستفادة من التوابع في فحص البيانات و يمكنك تحميله الاسم "processor.php "
و أهم النقاط في الشيفرة هي :
.) تضمين الملف الذي يحوي شيفرة الصف إلى برنامجنا بواسطة التعليمة "include" :
.) استخدام توابع التهيئة و هذا مثال على احد التوابع "isempty" :
في حال وجود خطأ إعطاء رسالة تبين عدم حدوث العملية و تقوم بعرض الأخطاء الموجودة .
في حال عدم وجود أية أخطاء يمكنك القيام بما تريده و ستظهر رسالة تبين أن البيانات قد تم إدخالها بشكل صحيح .
تنفيذ البرنامج
يقوم المستخدم بإدخال البيانات في النموذج الذي قمنا ببنائه و بعد أن ينقر على الزر "حفظ" يتم تنفيذ صفحة "processor.php" التي تقوم بالتأكد من البيانات المدخلة و في حال كانت البيانات مقبولة تظهر الرسالة.
البيانات المدخلة صحيحة
.) في حال وجود خطأ ما مثلا عدم إدخال الاسم تظهر الرسالة :
لا يمكن تنفيذ العملية بسبب حدوث خطأ ما أو أكثر
الرجاء إعادة ملء النموذج بعد تصحيح الأخطاء التالية
الرجاء إدخال الاسم
.) و عند حدوث أكثر من خطأ يتم سرد الأخطاء الموجودة ضمن النموذج .
لا يمكن تنفيذ العملية بسبب حدوث خطأ ما أو أكثر
الرجاء إعادة ملء النموذج بعد تصحيح الأخطاء التالية
الرجاء إدخال الاسم
الرجاء إدخال الجنس
الرجاء إدخال العمر بين 1- 99
الرجاء اختيار المدينة
الرجاء اختيار هواية أو أكثر
خاتمة
الآن نكون قد وصلنا إلى نهاية هذه الدراسة و التي كان هدفها تعليمك منهج عمل يساعدك في حل مشاكلك و ينبهك لأمر هام هو التأكد من البيانات المستخدمة , يمكنك طبعا تطوير الصف و إضافة التوابع التي تحتاجها إليه لكي يلبي كافة احتياجاتك و لكن إذا كنت لا ترغب بذلك و تريد الحصول على صفوف جاهزة فليس هناك أية مشكلة, حيث تضم الانترنت العديد من الصفوف الجاهزة التي قام المبرمجون ببنائها و وضعها مجانا, و يمكنك تحميلها و الاستفادة منها و سنذكر مثالين عن هذه الصفوف الجاهزة في المرفق .
المرفق
يمكنك الحصول على صفوف جاهزة و مجانا من الانترنت , و سنقوم بطرح مثالين هنا و لم نقم بتطبيقيهما و إنما قمنا بنسخها من موقعها الأصلي و نترك لك اكتشاف و تنفيذ الأمثلة و لديك الموقع لكي تكتشف كل جديد .
Manuel Lemos' form class
يعتبر هذا الصف أحد الصفوف القوية و الفعالة و يمكنك تحميله من الموقع التالي و الذي قد يطلب منك التسجيل قبل تحميل الملف مع العلم أن التسجيل مجاني .
http://www.phpclasses.org/browse.html/package/1
و هناك أمثلة جيدة حول هذا الصف و الاستفادة منه .
بعد أن تقوم بتحميل الصف يمكنك تجربة هذا المثال و تعلم طريقة استثماره بالشكل الامثل .
form_validator.class
هذا أيضا صف جاهز و مجاني و هو أبسط من الصف السابق و يمكنك تحميله من الموقع التالي :
[url]http://dave.imarc.net/php.php
[/url]
و فيما يلي مثال يستفيد من هذا الصف .
والان بالنسبة للمثال الذي ذكرناه سابقا فيمكنكم تحميله من الرابط التالي
http://www.ziddu.com/download/8921579/phpclasses.zip.html
والان الى اللقاء في الدرس القادم من هذه الدورة المختصة بتعليمك لغة php
لنبدأ الن بالشرح:
الطريقة " isAlpha"
أحيانا نحتاج أن تكون القيمة عبارة عن صيغة نصية محددة, لذلك نبني أولا التابع " isAlpha" الذي يفحص فيما إذا كانت جميع محارف القيمة هي أحرف و بعد ذلك نبني بمثل هذه الطريقة تابع يفحص إذا ما كانت القيمة المدخلة هي عنوان بريد الكتروني ممكن
- الكود:
<?php
class FormValidator
{
// snip
// check whether input is alphabetic
function isAlpha($field, $msg)
{
$value = $this->_getValue($field);
$pattern = "/^[a-zA-Z]+$/";
if(preg_match($pattern, $value))
{
return true;
}
else
{
$this->_errorList[] = array("field" =>
$field, "value" => $value, "msg" => $msg);
return false;
}
}
}
?>
الطريقة " isEmailAddress":
تفحص هذه الطريقة القيمة إذا ما كانت عنوان بريد الكتروني صحيح أم لا .
- الكود:
<?php
class FormValidator
{
// snip
// check whether input is a valid email address
function isEmailAddress($field, $msg)
{
$value = $this->_getValue($field);
$pattern = "/^([a-zA-Z0-9])+([.a-zA-Z0-9_-])*@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-]+)+/";
if(preg_match($pattern, $value))
{
return true;
}
else
{
$this->_errorList[] = array("field" => $field, "value" => $value, "msg" => $msg);
return false;
}
}
}
?>
الطريقة " isError"
تستخدم هذه الطريقة لتدلنا فيما إذا نتج لدي أخطاء نتيجة إدخالات المستخدم و بعد فحص البيانات بالطرق السابقة و هي تقوم بفحص طول المصفوفة "" فإذا كان اكبر من الواحد فهذا يعني أن خطأ ما قد حدث .
- الكود:
<?php
class FormValidator
{
// snip
// check whether any errors have occurred in validation
// returns Boolean
function isError()
{
if (sizeof($this->_errorList) > 0)
{
return true;
}
else
{
return false;
}
}
}
?>
الطريقة " getErrorList"
بعد أن كتبنا الطريقة " isError" التي دلتنا على حدوث خطأ ما نكتب الطريقة التالية التي تقوم بالحصول على الأخطاء الناتجة و ذلك بإرجاعها للمصفوفة "$_errorList" الحالية .
- الكود:
<?php
class FormValidator
{
// snip
// return the current list of errors
function getErrorList()
{
return $this->_errorList;
}
}
?>
الطريقة " resetErrorList"
تقوم هذه الطريقة بتهيئة مصفوفة الأخطاء "$_errorList" أي جعلها فارغة لا تحتوي أية قيمة كالتالي:
- الكود:
<?php
class FormValidator
{
// snip
// reset the error list
function resetErrorList()
{
$this->_errorList = array();
}
}
?>
الباني " constructor"
الباني هو عبارة عن قسم من الصف بحيث يتم تنفيذه عند التصريح عن الصف و في حالتنا هذه يجب وضع التابع resetErrorList" ضمن التابع الباني ليقوم بتهيئة مصفوفة الأخطاء عند التصريح عن الصف و يكون الباني عبارة عن تابع له نفس اسم الصف على الشكل التالي:
- الكود:
<?php
class FormValidator
{
// snip
// constructor
// reset error list
function FormValidator()
{
$this->resetErrorList();
}
}
?>
[b]مثال شامل[/b]
لا بد انك قد مللت من الصف و تريد اختباره و رؤية عمله لذلك سنقوم الآن ببناء مثال سريع بلغة HTML بحيث تحتوي على حقول يدخلها المستخدم ثم نكتب برنامج بلغة PHP لاستدعاء الصف و تنفيذه على النموذج المبني .
سيحتوي هذا النموذج على حقول يدخلها المستخدم كالتالي:
الاسم , العمر , المدينة و يختارها من قائمة منسدلة , الهوايات و يمكنه اختيار أكثر من هواية .
يمكنك تحميل الصفحة و تحمل الاسم fv_1.html ( الموجودة في نهاية هذا الدرس ) .
عند فتح الصفحة تحصل على الشكل :
طبعا الصفحة مكتوبة بلغة HTML (البعض لا يحلو له أن يسميها لغة !!!) و سنقوم بشرح أهم ما استخدمناه في النموذج.
أهم نقاط صنع النموذج
.) عند تنفيذ الحدث سيتم استدعاء الصفحة " processor.php" و نستخدم الطريقة Post في الحصول على البيانات من الحقول :
- الكود:
<form action="processor.php" method="POST">
.) حقل الاسم هو عبارة عن مربع ادخال نصي بطول 15 :
- الكود:
<input type="text" name="name" size="15">
.) حقل العمر هو عبارة عن مربع إدخال نصي بطول 2 :
<input type="text" name="age" size="2" maxlength="2">
.) تحديد الجنس ذكر أو أنثى من خلال صناديق الاختيار "Radiobox" :
- الكود:
<input type="Radio" name="sex" value="m">ذكر
<input type="Radio" name="sex" value="f">أنثى
.) تحديد المدينة من خلال قائمة منسدلة كالتالي:
- الكود:
<select name="stype">
<option selected>اختر واحدة من فضلك</option>
<option>حلب</option>
<option>دمشق</option>
<option>مدينة أخرى</option>
</select>
.) تحديد الهوايات من خلال وضع إشارة صح "Checkbox":
- الكود:
<input type="Checkbox" name="sfill[]" value="BLT">المطالعة
<input type="Checkbox" name="sfill[]" value="EC">الرياضة
<input type="Checkbox" name="sfill[]" value="PBJ"> شيء آخر
.) وضع زر حفظ يأخذ البيانات :
- الكود:
<input type="submit" name="submit" value="حفظ">
كتابة البرنامج :
الآن سنقوم بكتابة البرنامج بلغة PHP و الذي سيقوم بتعريف غرض من الصف الذي قمنا ببنائه , و من ثم الاستفادة من التوابع في فحص البيانات و يمكنك تحميله الاسم "processor.php "
و أهم النقاط في الشيفرة هي :
.) تضمين الملف الذي يحوي شيفرة الصف إلى برنامجنا بواسطة التعليمة "include" :
- الكود:
include("FormValidator.class.inc");
- الكود:
$fv = new FormValidator();
.) استخدام توابع التهيئة و هذا مثال على احد التوابع "isempty" :
- الكود:
$fv->isEmpty("name", "الرجاء ادخال الاسم");
في حال وجود خطأ إعطاء رسالة تبين عدم حدوث العملية و تقوم بعرض الأخطاء الموجودة .
في حال عدم وجود أية أخطاء يمكنك القيام بما تريده و ستظهر رسالة تبين أن البيانات قد تم إدخالها بشكل صحيح .
تنفيذ البرنامج
يقوم المستخدم بإدخال البيانات في النموذج الذي قمنا ببنائه و بعد أن ينقر على الزر "حفظ" يتم تنفيذ صفحة "processor.php" التي تقوم بالتأكد من البيانات المدخلة و في حال كانت البيانات مقبولة تظهر الرسالة.
البيانات المدخلة صحيحة
.) في حال وجود خطأ ما مثلا عدم إدخال الاسم تظهر الرسالة :
لا يمكن تنفيذ العملية بسبب حدوث خطأ ما أو أكثر
الرجاء إعادة ملء النموذج بعد تصحيح الأخطاء التالية
الرجاء إدخال الاسم
.) و عند حدوث أكثر من خطأ يتم سرد الأخطاء الموجودة ضمن النموذج .
لا يمكن تنفيذ العملية بسبب حدوث خطأ ما أو أكثر
الرجاء إعادة ملء النموذج بعد تصحيح الأخطاء التالية
الرجاء إدخال الاسم
الرجاء إدخال الجنس
الرجاء إدخال العمر بين 1- 99
الرجاء اختيار المدينة
الرجاء اختيار هواية أو أكثر
خاتمة
الآن نكون قد وصلنا إلى نهاية هذه الدراسة و التي كان هدفها تعليمك منهج عمل يساعدك في حل مشاكلك و ينبهك لأمر هام هو التأكد من البيانات المستخدمة , يمكنك طبعا تطوير الصف و إضافة التوابع التي تحتاجها إليه لكي يلبي كافة احتياجاتك و لكن إذا كنت لا ترغب بذلك و تريد الحصول على صفوف جاهزة فليس هناك أية مشكلة, حيث تضم الانترنت العديد من الصفوف الجاهزة التي قام المبرمجون ببنائها و وضعها مجانا, و يمكنك تحميلها و الاستفادة منها و سنذكر مثالين عن هذه الصفوف الجاهزة في المرفق .
المرفق
يمكنك الحصول على صفوف جاهزة و مجانا من الانترنت , و سنقوم بطرح مثالين هنا و لم نقم بتطبيقيهما و إنما قمنا بنسخها من موقعها الأصلي و نترك لك اكتشاف و تنفيذ الأمثلة و لديك الموقع لكي تكتشف كل جديد .
Manuel Lemos' form class
يعتبر هذا الصف أحد الصفوف القوية و الفعالة و يمكنك تحميله من الموقع التالي و الذي قد يطلب منك التسجيل قبل تحميل الملف مع العلم أن التسجيل مجاني .
http://www.phpclasses.org/browse.html/package/1
و هناك أمثلة جيدة حول هذا الصف و الاستفادة منه .
بعد أن تقوم بتحميل الصف يمكنك تجربة هذا المثال و تعلم طريقة استثماره بالشكل الامثل .
- الكود:
html>
<head><basefont face="Arial"></head>
<body>
<?php
// function to output form
// called by class Output() method
function displayForm($str)
{
echo $str;
}
// include class
include("forms.php");
// instantiate object
$contact = new form_class;
// set some form properties
$contact->NAME="contact";
$contact->METHOD="POST";
$contact->ACTION=$PHP_SELF;
// start building the form fields
// add a name field
$contact->AddInput(array(
"TYPE"=>"text",
"NAME"=>"name",
"MAXLENGTH"=>50,
"ValidateAsNotEmpty"=>1,
"ValidateAsNotEmptyErrorMessage"=>"You must enter your name"
));
// note that you can specify how to validate the data while adding a field
// a number of different validation routines are available
// look at the documentation for details
// add an email address field
$contact->AddInput(array(
"TYPE"=>"text",
"NAME"=>"email",
"MAXLENGTH"=>150,
"ValidateAsEmail"=>1,
"ValidateAsEmailErrorMessage"=>"You must enter a valid email address",
));
// add a textarea box for message
$contact->AddInput(array(
"TYPE"=>"textarea",
"NAME"=>"message",
"ROWS"=>6,
"COLS"=>40,
"ValidateAsNotEmpty"=>1,
"ValidateAsNotEmptyErrorMessage"=>"You must enter a message",
));
// and so on
// you can also add radio buttons, list boxes and check boxes
// add a submit button
$contact->AddInput(array(
"TYPE"=>"submit",
"NAME"=>"submit",
"VALUE"=>"Send Message"
));
// check to see if the form has been submitted
// use the form variable "submit" as the key
if ($contact->WasSubmitted("submit"))
{
// if form has been submitted
// read in all the form data
$contact->LoadInputValues(TRUE);
// validate the data on the server-side again
// invalid fields are stored in the array $invalid[]
// the first error message is stored in $error
$error = $contact->Validate(&$invalid);
if ($error != "")
{
// if error, report it
echo "The following error occurred: $error";
}
else
{
// else mail the form data to the webmaster
// and report result
echo "Your message was successfully sent.";
}
}
else
{
// form not yet submitted
// so display it to the user
// begin constructing the form
// using the field definitions above
// note how AddDataPart() can be used to intersperse
// HTML code between the form fields
$contact->AddDataPart("<br> Name: <br>");
$contact->AddInputPart("name");
$contact->AddDataPart("<br> Email address: <br>");
$contact->AddInputPart("email");
$contact->AddDataPart("<br> Message: <br>");
$contact->AddInputPart("message");
$contact->AddDataPart("<br>");
$contact->AddInputPart("submit");
}
// all done
// now output the form/form result
// this function dumps the HTML form (or its result)
// together with all required Javascript code
$error = $contact->Output(array(
"Function"=>"displayForm",
"EndOfLine"=>" "
));
// end
?>
</body>
</html>
form_validator.class
هذا أيضا صف جاهز و مجاني و هو أبسط من الصف السابق و يمكنك تحميله من الموقع التالي :
[url]http://dave.imarc.net/php.php
[/url]
و فيما يلي مثال يستفيد من هذا الصف .
- الكود:
<html>
<head>
<basefont face=Arial>
</head>
<body>
<?php
if (!$submit)
{?>
<form action="<?=$PHP_SELF?>" method="POST">
Name:
<br>
<input type="text" name="name" size="30">
<p>
Email address:
<br>
<input type="text" name="email" size="30">
<p>
Message:
<br>
<textarea name="message" cols="45" rows="6"></textarea>
<p>
<input type="submit" name="submit" value="Send">
</form>
<?php
}
else
{
// include class
include("form_validator.class");
// instantiate object
$fv = new form_validator();
// specify fields to be checked
// these fields are only checked to ensure that they contain values
// advanced data type validation is not possible
if ($fv->validate_fields("name, email, message"))
{
// if no errors
// send out mail
// report status
echo "Your message was successfully sent.";
}
else
{
// or list errors
echo "The form could not be processed because the following fields contained invalid data:";
echo "<ul>";
foreach ($fv->error_array as $e)
{
echo "<li>$e";
}
echo "</ul>";
echo "Click <a href=javascript:history.back()>here</a> to go back and correct the errors";
}
}
?>
</body>
</html>
والان بالنسبة للمثال الذي ذكرناه سابقا فيمكنكم تحميله من الرابط التالي
http://www.ziddu.com/download/8921579/phpclasses.zip.html
والان الى اللقاء في الدرس القادم من هذه الدورة المختصة بتعليمك لغة php
admin- المدير العام للمنتدى
- البلد : المنتدى عدد المساهمات : 68
النقاط : 1307
تاريخ التسجيل : 21/01/2009
العمر : 33
مواضيع مماثلة
» التأكد من صحة بيانات المستخدم المرسلة عبر النماذج(1)
» التأكد من صحة بيانات المستخدم المرسلة عبر النماذج(2)
» التأكد من صحة بيانات المستخدم المرسلة عبر النماذج(2)
» التأكد من صحة بيانات المستخدم المرسلة عبر النماذج(2)
» التأكد من صحة بيانات المستخدم المرسلة عبر النماذج(2)
صفحة 1 من اصل 1
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى