На мой взгляд пустой() это лучший способ проверить ввод в общем
if(empty($_POST[ 'username' ])) {
$error = 'Please enter a user name';
}
В лучшем случае вы делаете это
$username = !empty($_POST[ 'username' ]) ? trim($_POST[ 'username' ]) : '';
if(empty($username)) $error = 'Please insert a user name';
if(strlen($username) < 3) $error = 'Username needs 3 characters';
//etc...
Это позволит убедиться, что пользователь не просто предоставить белое-пространство кормить запрошенный вход
Есть несколько методов для обработки ввода.
1) Перенаправление форму на ту же страницу и обрабатывать ввод над выходом
$error = '';
if(strtolower($_SERVER[ 'REQUEST_METHOD' ]) === 'post') {
//handle user input and fill $error if needed
if(empty($error)) {
//success
}
}
?>
<form action="thissite.php">
<?php if(!empty($error)) :?><span class="error"><?=$error?></span><?php endif; ?>
<...rest of the form...>
</form>
2) Вы можете обрабатывать его с помощью AJAX
отправить форму с помощью AJAX (см JQuery-х $.ajax и $.serialize , это хорошо поможет вам), получите строку JSON, содержащую либо состояние успеха, либо ошибку. Разобрать это и вставить элементы ошибок в вашей форме соответственно
3) (Худший способ имо) Перейти на новую страницу, показать ошибки и перенаправить к форме еще раз, если есть ошибки
Отправить форму на новый страницу, которая обрабатывает входные данные, выводит сообщения об ошибках в стиле и помещает ссылку, которая либо приступает к вам (при успешном завершении), либо возвращает вас в форму (по ошибке).
Вы можете использовать jQuey для проверки значений полей, а затем только отправьте форму, если все заполненный. –
Skugga: Я считаю, что его плохая практика заключается в проверке формы на стороне сервера, лучше использовать javascript в вашей форме, чтобы проверить все поля, а затем отправить окончательное полное значение на серверный скрипт (php). – dreamweiver
@dreamweiver Надеюсь, вы не собираетесь полностью отказываться от проверки на стороне сервера ?! – deceze