منتديات النورس
هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.

التأكد من صحة بيانات المستخدم المرسلة عبر النماذج(3)

اذهب الى الأسفل

التأكد من صحة بيانات المستخدم المرسلة عبر النماذج(3) Empty التأكد من صحة بيانات المستخدم المرسلة عبر النماذج(3)

مُساهمة من طرف admin الخميس مارس 11, 2010 4:23 am

سنكمل في هذا الدرس ما بدأناه في الدرس السابق:


لنبدأ الن بالشرح:

الطريقة " 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 ( الموجودة في نهاية هذا الدرس ) .
عند فتح الصفحة تحصل على الشكل :

التأكد من صحة بيانات المستخدم المرسلة عبر النماذج(3) Imgg10


طبعا الصفحة مكتوبة بلغة 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"> شيء آخر &nbsp;

.) وضع زر حفظ يأخذ البيانات :

الكود:


    <input type="submit" name="submit" value="حفظ">

كتابة البرنامج :

الآن سنقوم بكتابة البرنامج بلغة PHP و الذي سيقوم بتعريف غرض من الصف الذي قمنا ببنائه , و من ثم الاستفادة من التوابع في فحص البيانات و يمكنك تحميله الاسم "processor.php "
و أهم النقاط في الشيفرة هي :

.) تضمين الملف الذي يحوي شيفرة الصف إلى برنامجنا بواسطة التعليمة "include" :

الكود:


    include("FormValidator.class.inc");
.) تعريف الغرض "fv" من الصف " FormValidator" بواسطة الكلمة المفتاحية "new" :

الكود:


    $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

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الرجوع الى أعلى الصفحة

- مواضيع مماثلة

 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى