Как сделать сайтУроки PHP → Повторный вывод формы при некорректном вводе

Повторный вывод формы при некорректном вводе

При некорректно вводимой информации пользователем, будь то email или повтор пароля, будет удобнее вновь отобразить форму, а также информативное сообщение о возникшей проблеме. Вы поступите с пользователем гораздо мягче, если при повторном выводе формы заполните ее поля значениями, которые он вводил в первый раз. Нет ничего хуже, чем, заполнив длинную форму, вдруг узнать, что вы забыли установить флажок и должны все начать с нуля.
Отображение сообщения об ошибке и повторный вывод формы с заполненными полями
<html>
<head>
<title>Регистрация нового пользователя</title>
</head>
<body>
<?php
// Проверить отправленные значения
if ($_POST["submit"]){
require_once('db_login.php');
require_once('DB.php');
$connection =
DB::connect("mysql://$db_username:$db_password@$db_host/$db_
database");
if (DB::isError($connection)){
die("Ошибка подключения к базе данных: <br />".
DB::errorMessage($connection));
}
// Не забывайте использовать функцию htmlentities для предотвращения
// атак межсайтового скриптинга
$username = $_POST["username"];
$username = mysql_real_escape_string(
get_magic_quotes_gpc()?stripslashes($username):$username);
$password = $_POST["password"];
$password = htmlentities(
get_magic_quotes_gpc()?stripslashes($password):$password);
$email = $_POST["email"];
$email = htmlentities(
get_magic_quotes_gpc()?stripslashes($password):$password);
$phone = $_POST["phone"];
$phone = htmlentities(
get_magic_quotes_gpc()?stripslashes($phone):$phone);
$error = "";
if (is_null($username == "")) {
$error .= "Имя пользователя не может быть пустым.<br />";
}
if ($password == "") {
$error .= "Пароль не может быть пустым.<br />";
}
if ($email == "") {
$error .= "Адрес электронной почты не может быть пустым.<br />";
}
if ($phone == "") {
$error .= "Номер телефона не может быть пустым.<br />";
}
// Запрос с информацией, полученной от пользователя
$query = "SELECT * FROM users WHERE username = '$username'";
// Выполнить запрос к базе данных
$result = $connection->query($query);
if (DB::isError($result)) {
die("Ошибка исполнения запроса к базе данных: <br />".$query." "
.DB::errorMessage($result));
}
$user_count = $result->numRows();
if ($user_count > 0) {
$error .= "Error: Username $username is taken already. Please select
another.<br />";
}
if ($error) {
echo $error;
}
else {
echo "Добро пожаловать.". $username;
/*
.
.
.
Выполняемый код при доступе…
.
.
.
*/
exit;
}
}
?>
// Этот сценарий выполняет обработку результатов и отображает форму
<form action="<?php echo htmlentities($_SERVER["PHP_SELF"]); ?>" method="POST"
onsubmit="return check_valid(this);" id="test1" name="test1">
<table>
<tr>
<td width="30%" align="right">Username:
<td><input type="text" name="username"
value="<?php echo $username; ?>" />
</td>
</tr>
<tr>
<td align="right">Password:</td>
<td><input type="password" name="password"
value="<?php echo $password; ?>" />
</td>
</tr>
<tr>
<td align="right">Phone:</td>
<td><input type="phone" name="phone"
value="<?php echo $phone; ?>" />
</td>
</tr>
<tr>
<td align="right">Email:</td>
<td><input type="email" name="email"
value="<?php echo $email; ?>" />
</td>
</tr>
<tr>
<td> 
<td><input type="submit" name="submit" value="Submit" /></td>
</tr>
</table>
</form>
</body>
</html>
После отправки формы отображается сообщение об ошибке и сама форма с заполненными полями! Если все данные соблюдены правилами, код выдаст сообщение: Добро пожаловать “Например” Николай.




Теперь нажмите кнопку, что бы не забыть адрес и вернуться к нам снова.