Отправьте данные, если проверка не завершилась (PHP, MYSQL)

поэтому я работаю над сценарием регистрации и еще не выяснил, как реализовать предотвращение отправки данных, если ввод формы недействителен.

У меня есть поле имени, поле электронной почты и поле пароля. Все три имеют свою валидацию. Код выглядит так:

    <form action="config.php" method="post">
Benutzername:<br>
<input type="Text" autofocus name="username" value="<?php if(!empty($_POST["username"])) echo $name; ?>">
<span class="req"><?php echo $nameErr;?></span><br><br>
Email:<br>
<input type="text" name="email" value="<?php if(!empty($_POST["email"])) echo $_POST['email']; ?>">
<span class="req"><?php echo $emailErr;?></span><br><br>
Passwort:<br>
<input type="password" name="password" value="">
<span class="req"><?php echo $passErr;?></span><br><br>
<input type="Submit" name="send" value="Absenden">
</form>

Проверка проходит выше:

    if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (empty($_POST["username"])) {
$nameErr = "Dieses Feld darf nicht leer bleiben.";
$name = "";
} else {
$nameCheck = false;
$nameErr = "";
}

if (empty($_POST["email"]) || !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
$emailErr = "Bitte eine gültige Email-Adresse angeben.";
$email = "";
} else {
$emailCheck = false;
$email = $_POST['email'];
$emailErr = "";

}

if (empty($_POST["password"])) {
$passErr = "Bitte geben Sie ein Passwort an.";
if(!preg_match('~^(?=.*\d.*\d)[0-9A-Za-z!@#$%*]{6,}$~', $_POST['password'])) {
$passErr = "Das Passwort muss mindestens zwei Ziffern enthalten und aus 6 Zeichen bestehen.";
}
} else {
$passwordCheck = false;
$password = $_POST['password'];
$passErr = "";
}

}

if($emailCheck != true && $passwordCheck != true && $nameCheck != true) {
header('Location: index.php');
}

Итак, если все выполнено правильно, форму следует перенаправить в config.php.

Но с этим кодом я могу оставить все метки пустыми, и он все равно отправляет …

Также у меня есть проверка на config.php, который ищет в базе данных, если электронная почта или пользователь уже зарегистрирован. Как я могу реализовать эту проверку на странице формы (index.php)?

Заранее спасибо! Я надеюсь, что я сделал все прямо здесь ..

0

Решение

<?phpif (isset($_POST['send'])) {

if (empty($_POST["username"])) {
$nameErr = "Dieses Feld darf nicht leer bleiben.";
$name = "";
} else {
$nameCheck = false;
$username =$_POST['username'];
$nameErr = "";
}

if (empty($_POST["email"]) || !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
$emailErr = "Bitte eine gültige Email-Adresse angeben.";
$email = "";
} else {
$emailCheck = false;
$email = $_POST['email'];
$emailErr = "";

}

if (empty($_POST["password"])) {
$passErr = "Bitte geben Sie ein Passwort an.";
if(!preg_match('~^(?=.*\d.*\d)[0-9A-Za-z!@#$%*]{6,}$~', $_POST['password'])) {
$passErr = "Das Passwort muss mindestens zwei Ziffern enthalten und aus 6 Zeichen bestehen.";
}
} else {
$passwordCheck = false;
$password = $_POST['password'];
$passErr = "";
}

}
?>
1

Другие решения

    $emailCheck = true;
$passwordCheck = true;
$nameCheck = true;

if ($_SERVER["REQUEST_METHOD"] == "POST") {

if (empty($_POST["username"])) {
$nameErr = "Dieses Feld darf nicht leer bleiben.";
$name = "";
} else {
$nameCheck = false;
$nameErr = "";
}

if (empty($_POST["email"]) || !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
$emailErr = "Bitte eine gültige Email-Adresse angeben.";
$email = "";
} else {
$emailCheck = false;
$email = $_POST['email'];
$emailErr = "";

}

if (empty($_POST["password"])) {
$passErr = "Bitte geben Sie ein Passwort an.";
if(!preg_match('~^(?=.*\d.*\d)[0-9A-Za-z!@#$%*]{6,}$~', $_POST['password'])) {
$passErr = "Das Passwort muss mindestens zwei Ziffern enthalten und aus 6 Zeichen bestehen.";
}
} else {
$passwordCheck = false;
$password = $_POST['password'];
$passErr = "";
}

}

if($emailCheck != true && $passwordCheck != true && $nameCheck != true) {
header('Location: index.php');
}
0

По вопросам рекламы [email protected]