我正在使用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在验证为真时运行
add this:
onsubmit="return validateEmail(this)"
修改JS代码为:
var validRegex = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((.[a-zA-Z0-9_-]{2,3}){1,2})$/;