Валидация в PHP
-
24-09-2019 - |
Вопрос
У меня есть отправка страницы в 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;
...
}
}