нет выхода из скрипта php - PullRequest
       1

нет выхода из скрипта php

0 голосов
/ 14 октября 2018

У меня есть поля username и password и кнопка login.Мой сценарий php должен проверять, являются ли поля пустыми и не превышает ли длина передаваемых данных 6 символов.Он не делает то, что я хочу, и я не уверен, почему.Я новичок в php, поэтому я использую W3 Schools в качестве ссылки, но не могу понять.Я пропущу код ниже.

<?php

if($_POST){

#not empty
#atleast 6 characters long


# array holds errors
$errors = array();

# validation starts here
if(empty($_POST['uname'])){
    $errors['$uname1'] = "Your name cannot be empty";
}

if(strlen($_POST['uname']) < 6){
    $errors['uname2'] = "Must be longer than 6 characters";
}

if(empty($_POST['psw'])){
    $errors['psw1'] = "Your password cannot be empty";
}

if(strlen($_POST['psw']) < 6){
    $errors['psw2'] = "Must be longer than 6 characters";
}


if(count($errors) == 0){

    # redirect to the game page
    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 if(isset($errors['uname1'])) echo $errors['uname1'];  ?>
            </p>
            <p>
                <?php if(isset($errors['uname2'])) echo $errors['uname2'];  ?>
            </p>


            <label for="psw"><b>Password</b></label>
            <input type="password" placeholder="Enter Password" name="psw">
            <p>
                <?php if(isset($errors['psw1'])) echo $errors['psw1'];  ?>
            </p>
            <p>
                <?php if(isset($errors['psw2'])) echo $errors['psw2'];  ?>
            </p>

            <button type="submit" value="submit">Login</button>
        </div>
    </form>

</body>

</html>

1 Ответ

0 голосов
/ 14 октября 2018

Попробуйте этот пример.Он основан на функции 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...