以下是HTML和JavaScript代码:
if (username == '' || password == '' || firstname == '' || secondname == '' || email == '') {
alert("Please fill all the fields!");
} else if ((password.length) < 8) {
alert("Password should have at least 8 characters in length!");
} else {
$.post("register.php", {
username1: username,
password1: password,
firstname1: firstname,
secondname1: secondname,
email1: email
},
function(data) {
if (data == 'You have successfully registered!') {
$("form-horizontal")[0].reset();
}
alert(data);
});
和php: PHP
我的问题是,无论注册中的字段包含什么和/或用户名是否在数据库中,我都会得到同样的错误:
此用户名已经注册!请再试一次!
答案 0 :(得分:1)
在PHP脚本中,您不检查查询中是否有任何行,您只检查查询是否为空。
您可以通过将if
语句更改为:
$sql1="SELECT * FROM users WHERE username='$username'";
$result = $mysqli->query($sql1);
if(!$result->num_rows)
{
$sql2 = "INSERT INTO users(username, password, firstname, lastname, email) VALUES ('$username', '$password', '$firstname', '$secondname', '$email')";
$result2 = $mysqli->query($sql2);
if($result2) // Insert query
{
echo "You have successfully registered!";
}
else
{
echo "Error!";
}
我建议你看看我改变了什么:
http://php.net/manual/en/mysqli-result.num-rows.php
检查字符串是否为空的更好方法是执行此操作而不是现在的操作:
if (username == null || password == null || firstname == null || secondname == null || email == null)
我还建议在PHP中检查是否所有内容都有值,因为在检查元素时可以更改Javascript。
你还需要准备你的语句,你的代码目前容易受到SQL注入攻击,你绝对不希望这样。
有关如何做到这一点的更多信息可以在这里找到:
How can I prevent SQL injection in PHP?