Попробуйте этот пример.Он основан на функции PHP7 под названием оператор объединения нулей .Как указано в документации :
Возвращает свой первый операнд, если он существует и не равен NULL;в противном случае он возвращает свой второй операнд.
Таким образом, вы можете написать что-то вроде этого: $uname = $_POST['uname'] ?? '';
, что означает, что $uname
должно быть $_POST['uname']
, если $_POST['uname']
существует и не равно NULL.В противном случае он будет равен пустой строке ''
.
То же самое с ошибкой эха: <?php echo $errors['psw'] ?? ''; ?>
.Если ошибка установлена и не равна нулю - выведите их.В противном случае выводится пустая строка.
Также нет необходимости проверять, является ли строка пустой.Потому что если строка пустая - это гарантирует, что длина строки меньше 6.
<?php
$uname = $_POST['uname'] ?? '';
$psw = $_POST['psw'] ?? '';
$errors = [];
if(strlen($uname) < 6) $errors['uname'] = 'Name must be longer than 6 characters';
if(strlen($psw) < 6) $errors['psw'] = 'Password must be longer than 6 characters';
if(empty($errors)) {
header('Location:success.html');
exit();
}
?>
<!DOCTYPE html>
<head>
<title>Hangman Home Page</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<form action="" method="post" class="modal-content animate">
<div class="container">
</p>
<label for="uname"><b>Username</b></label>
<input type="text" placeholder="Enter Username" name="uname">
<p><?php echo $errors['uname'] ?? ''; ?></p>
<label for="psw"><b>Password</b></label>
<input type="password" placeholder="Enter Password" name="psw">
<p><?php echo $errors['psw'] ?? ''; ?></p>
<button type="submit" value="submit">Login</button>
</div>
</form>
</body>
</html>