سؤال

لدي صفحة إرسال في HTML. عندما أقوم بإرسال بيانات النموذج ، فإنه ينتقل إلى صفحة PHP ، التي تدرج البيانات الموجودة في قاعدة البيانات.

سؤالي هو كيف يمكنني التأكد من أن البيانات الموجودة على صفحة HTML ليست فارغة أو فارغة دون استخدام JavaScript؟ هل هناك على أي حال يمكن القيام بذلك في PHP؟ شكرًا!

هل كانت مفيدة؟

المحلول

ببساطة استخدم هياكل التحكم كالمعتاد:

$non_empties = array('name', 'email', 'address');

foreach ($non_empties as $field) {
    if (! isset($_POST[$field]) || $_POST[$field] == '') {
        show_error("Please fill your $field, thank you.");
    }
}

$db->insert();

مثال أكثر تقدمًا:

// Defined in your library
function validate_as_non_empty(Array $non_empties) {
    foreach ($non_empties as $field) {
        if (! isset($_POST[$field]) || $_POST[$field] == '') {
            throw new Exception("Please fill your $field, thank you.");
        }
    }
}

// Defined in your library
function validate_as_foo(Array $arr) { ... }

// Your request handler
try {
    validate_as_non_empty(array('name', 'address'));
    validate_as_foo(array('email'));
    $db->insert();
} catch (Exception $e) {
    show_error($e->getMessage());
}

هناك مليون طريقة على الأقل للقيام بالتحقق من الصحة. عادة ما يكون لديك نوع من الإطار للاعتماد عليه. يتم إعطاء الأمثلة أعلاه فقط للإلهام.

نصائح أخرى

في الجزء العلوي من صفحة PHP الخاصة بك ، (الصفحة التي ربطتها في سمة الإجراء للنموذج) وضعت:

if (isset($_POST['submit_check']) && strlen($_POST['whatever'])) { // submit_check is a hidden form field
    insert_to_db();
    header('Location: success.php'); // redirect to another page to prevent double-submits
    exit;
}

لذلك قد يبدو HTML الخاص بك:

<form action="" method="post"> 
    <input type="text" name="whatever"/>
    <input type="hidden" name="submit_check" value="1"/> 
</form>

تعني قيمة الإجراء الفارغة النشر إلى نفس الصفحة ، ولكن يمكنك النشر إلى صفحة أخرى إذا كنت تريد.

استرجاع البيانات المقدمة باستخدام $ _post super-global في ملف php الخاص بك مثل هذا:

$ _post ['firstName'] لكل عنصر html الذي يتم بعد ذلك. لـ Eaxmple ، في HTML الخاص بك:

<input type="text" name="firstname" />

ثم التحقق من صحة البيانات باستخدام PHP ، مع regex ، isset ، وما إلى ذلك ، وإعادة التوجيه وفقا لذلك إلى صفحة النجاح ، أو العودة إلى نموذج HTML.

يمكنك أيضًا القيام الشيء نفسه باستخدام AJAX (سيتم تطبيق التحقق من صحة PHP نفسه ، فقط نموذج نقل البيانات مختلف قليلاً)

إذا كان ما تطلبه هو ، "هل يمكنني التأكد من أن البيانات صالحة على جانب العميل بدون JavaScript" ، فإن الإجابة هي لا.

ولكن إذا كان كل ما تريد القيام به هو التأكد من التحقق من صحة البيانات قبل إدخالها في قاعدة البيانات الخاصة بك ، فمن المؤكد.

foreach ($_POST as $key=> $value) {

  switch ($key) {
   case 'my_value_name':
      //test $value is not null and other validation;
      //insert into database function
      break;

   ...

  }

}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top