Вопрос

У меня есть отправка страницы в 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>

Значение пустого действия означает опубликовать на той же странице, но вы можете опубликовать на другую страницу, если хотите.

Получите представленные данные, используя Super-Global $ _Post в вашем файле PHP, как это:

$ _Post ['firstName'] для каждого HTML-элемента, который является пост-ред. Для Eaxmple, в вашем HTML:

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

Затем проверьте данные с использованием PHP, с Regex, Isset и etc и перенаправить соответствующим образом либо на страницу успеха или обратно в форму 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