表单未被检查
Form not being checked
我希望在我的代码中进行服务器端检查。提交表单后,我应该在服务器端检查表单,并且应该回显错误。但就像现在一样,无论我做什么,总是注册一个帐户。提交按钮跳过所有服务器端检查,只是将帐户添加到数据库中。
这是我的Javascript
$("#registerSubmit").click(function(e) {
document.getElementById("registerSubmit").disabled = true;
document.getElementById('strongText').innerHTML = "Creating account, please wait...<br>";
$("#strongText").fadeIn();
e.preventDefault();
$("input[name='username']").val($("#input-2").val());
$("input[name='firstname']").val($("#input-1").val());
$("input[name='password1']").val($("#input-3").val());
$("input[name='password2']").val($("#input-4").val());
$("input[name='email']").val($("#input-5").val());
var username = $("input[name='username']").val();
var firstname = $("input[name='firstname']").val();
var password1 = $("input[name='password1']").val();
var password2 = $("input[name='password2']").val();
var email = $("input[name='email']").val();
$.ajax({
type: 'POST',
data: {
username: username,
firstname: firstname,
password1: password1,
password2: password2,
email: email
},
url: 'checkuser.php',
success: function(data) { //Receives the data from the php code
//console.log(data);
if (data == "Unavailable") {
document.getElementById('strongText').innerHTML = "Username Unavailable<br>";
document.getElementById("registerSubmit").disabled = false;
} else if(data == 'Email_Exists') {
document.getElementById('strongText').innerHTML = "Email Already Registered<br>";
document.getElementById("registerSubmit").disabled = false;
} else {
$.post(
'registerCheck.php',
$('#registerform').serialize(),
function(data,status){
document.getElementById('strongText').innerHTML = data + "<br>";
window.location.href = "/login.php";
}
);
//window.location.href = "/login.php";
}
},
error: function(xhr, err) {
console.log("readyState: " + xhr.readyState + "'nstatus: " + xhr.status);
console.log("responseText: " + xhr.responseText);
}
});
});
这是我的PHP
<?php
require 'databaseinformation.php';
$firstname = $_POST["firstname"];
$password1 = $_POST["password1"];
$password2 = $_POST["password2"];
$email = $_POST["email"];
$ip = $_SERVER['REMOTE_ADDR'];
$username = $_POST["username"];
$mysqli = new mysqli(DB_SERVER, DB_USER, DB_PASSWORD, DB_DATABASE);
if(mysqli_connect_errno()) {
echo "Connection Failed.";
exit();
}
if (strlen($username) < 3 || strlen($username) > 15) {
echo "Username must be between 3 and 15 characters";
} elseif (strlen($password1) < 5 || strlen($password1) > 25) {
echo "Password must be between 5 and 25 characters";
} elseif ( $password1 !== $password2) {
echo "Password are mismatched";
} elseif (strpos($email,'@') !== true || strpos($email,'.') !== true) {
echo "Not a valid E-Mail";
} elseif ($stmt = $mysqli->prepare("SELECT `username` FROM `accounts` WHERE username = ?")) {
$stmt->bind_param("s", $username);
$stmt->execute();
$stmt->store_result();
if ($stmt->num_rows) {
//echo json_encode("0");
echo "Unavailable";
//if unavailable
// header('Location: /register.html');
}
else {
if ($stmt = $mysqli->prepare("SELECT `email` FROM `accounts` WHERE email = ?")) {
$stmt->bind_param("s", $email);
$stmt->execute();
$stmt->store_result();
if ($stmt->num_rows) {
//echo json_encode("2");
echo "Email_Exists";
//if unavailable
// header('Location: /register.html');
}
else {
//echo json_encode("1");
echo "1";
}
}
}
}
$mysqli->close();
?>
问题出在你的电子邮件验证代码上,无论你做什么你总是以从服务器获取Not a valid E-Mail
消息而告终。而且,由于它不是在 AJAX 成功时处理的,否则块总是被执行,因此你的下一个 POST 块。
所以,取而代之的是 电子邮件验证 ,
} elseif (strpos($email, '@') == false || strpos($email, '.') == false) {
或
} elseif (strpos($email, '@') == 0 || strpos($email, '.') == 0) {
<小时 />为什么它不起作用?
!== Not identical
例如,$x !== $y 如果$x不等于 $y,或者它们不属于同一类型,则返回 true。
并且,strpos($email, '@')
返回您与布尔值对抗的整数类型。
并且,您遗漏了不同的验证消息,例如
- 用户名必须介于 3 到 15 个字符之间
- 密码必须介于 5 到 25 个字符之间
- 密码不匹配
请处理 AJAX 的所有成功。
if(data == "Unavailable") {
}else if(data == 'Email_Exists') {
}else if (data == 'Username must be between 3 and 15 characters'){
}else if (data == 'Password must be between 5 and 25 characters'){
}else if (data == 'Password are mismatched'){
}else if(data=='Not a valid E-Mail'){
}
相关文章:
- 在浏览器检查表单之前运行javascript onsubmit
- Javascript检查表单的当前数据是否等于其原始数据
- 试图检查表单中的值是否为一个设定范围内的数字
- 如何检查表单提交时鼠标滚动点击完成的点击事件
- 当我点击提交并尝试检查表单验证时,我的html表单将清除
- 在不重新运行jquery验证的情况下检查表单是否有效
- 检查表单中的电子邮件是否正确
- 如何用javascript中的.txt文件中的值检查表单中输入的值
- 在提交表单和显示消息之前,如何检查表单输入是否全是数字
- 尝试检索变量以检查表单是否有效
- 如何检查表单是否失焦
- 单击时,请检查表单中是否有不显示的元素
- 加载函数修订以检查表单的值
- 我的 JavaScript 无法正确检查表单的无线电输入
- HTML5 在提交之前检查表单
- 检查表单输入是否存在
- 当表单与jQuery插件混淆时,如何检查表单的有效性
- 使用 jQuery 检查表单是否具有输入元素
- 使用 jQuery 检查表单提交
- 检查表单输入的文本并更改其颜色