Я выполняю проверку электронной почты для регистрации администратора с помощью JavaScript и сохраняю данные в базе данных с помощью PHP. Предположительно, регистрация производится только в том случае, если электронная почта действительна. Но когда электронная почта оценивается как недействительная, код PHP все еще выполняется. Как мне сделать так, чтобы когда электронная почта недействительна, PHP не запускался.
Ниже приведен код PHP для сохранения данных в базу данных:
<?php include('connection.php'); if (isset($_POST['saveBtn'])) { $name = $_POST['name']; $ic = $_POST['ic']; $email = $_POST['email']; $pass = $_POST['pass']; $dob = $_POST['dob']; $contact = $_POST['contact']; $gender = $_POST['gender']; $des = $_POST['des']; $address = $_POST['address']; // Check if data exist $check = "SELECT * FROM admin WHERE admEmail = '".$email."' AND admPassword = '".$pass."'"; if (mysqli_num_rows(mysqli_query($connect,$check)) > 0) { ?> <script> alert('This email and password already registered!'); </script> <?php } else { $insert = "INSERT INTO admin (admName, admIC, admEmail, admPassword, admDOB, admContact, admGender, admDesignation, admAddress, admDateJoin) VALUES ('".$name."', '".$ic."', '".$email."', '".$pass."', '".$dob."', '".$contact."', '".$gender."', '".$des."', '".$address."', NOW())"; if (mysqli_query($connect, $insert)) { ?> <script> alert('Insertion Successful!'); window.close(); window.opener.location.reload(); </script> <?php } else { ?> <script> alert('Insertion Failed. Try Again!'); </script> <?php } } } ?>
Ниже приведен JS:
function validateEmail() {
var email = document.addAdminForm.email.value;
var validRegex = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/;
if (email.match(validRegex))
{
alert("Valid email address!");
return true;
}
else
{
document.getElementById("email_error").innerHTML = "Invalid email";
document.addAdminForm.email.focus();
return false;
}
}
Ниже приведена частичная HTML-форма:
<form class = "w-100" name = "addAdminForm" method = "POST" onsubmit = "validateEmail(this)" action = "add_admin.php">
<div class = "row">
<div class = "col form-group">
<!-- <label for = "email">Email</label> -->
<input type = "text" class = "form-control" name = "email" placeholder = "Email" required>
<span class = "error email_error" id = "email_error"></span>
</div>
<div class = "float-right">
<input type = "submit" class = "btn button_primary" value = "Save" name = "saveBtn">
</div>
</form>
Я ожидаю, что PHP запустится, когда проверка верна
проверьте этот метод, вам нужно изменить свой html на onsubmit = "return validateEmail()"
stackoverflow.com/a/56868812/179545
@unloco спасибо `onsubmit = "return validateEmail()" `работает
Добавь это:
onsubmit = "return validateEmail(this)"
измените свой JS-код на:
var validRegex = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/;
зачем добавлять два ответа, когда вы можете отредактировать свой другой ответ и добавить этот код?
измените свой код на
onsubmit = "validate(event)"
, затем добавьтеevent.preventDefault()
, чтобы отменить отправку формы, если адрес электронной почты недействителен