Javascript 登记表上显示用户名在不使用时已经在使用';不存在
以下是HTML和JavaScript代码:Javascript 登记表上显示用户名在不使用时已经在使用';不存在,javascript,php,mysql,Javascript,Php,Mysql,以下是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
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);
});
if(用户名=“”| |密码=“”| |第一名=“”| |第二名=“”| |电子邮件=“”){
警告(“请填写所有字段!”);
}否则如果((密码长度)<8){
警报(“密码长度应至少为8个字符!”);
}否则{
$.post(“register.php”{
username1:username,
密码1:密码,
名字1:名字,
secondname 1:secondname,
email1:电子邮件
},
功能(数据){
如果(数据==“您已成功注册!”){
$(“水平形式”)[0]。重置();
}
警报(数据);
});
而php:
我的问题是,无论注册中包含什么字段和/或用户名是否在数据库中,我都会收到相同的错误:
此用户名已注册!请重试!在您的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!";
}
我建议看一下这里,看看我改变了什么:检查字符串是否为空的更好方法是这样做,而不是现在所拥有的:
if (username == null || password == null || firstname == null || secondname == null || email == null)
我还建议在PHP中检查所有内容是否都有值,因为当您检查元素时,Javascript可以被更改
您还需要准备语句,您的代码目前很容易受到SQL注入的攻击,您绝对不希望这样
有关如何执行此操作的更多信息,请参见此处:介意发布你的mysql吗?允许用户使用他们想要的。@Fred ii-意思是什么?查询还是实际的表?也许你的mysql是failing@arch1ve现在更改了if语句,它转到第二个if的else分支,打印“Error!”另外,我现在不关心SQL注入,因为没有人会试图破坏我的数据库(个人项目)。无论它是否是个人项目,您都应该始终使用正确的安全工具。如果
If
语句不起作用,则是由于查询中的错误。第一个If
语句起作用,但在这之后,当它到达If($result2)时
并且它的计算结果不是true,然后它只会转到else
语句,回显“Error!”因为您在那里检查的查询不正确。请尝试在数据库中执行查询,看看它是否在那里工作。没问题,我建议在开发启用错误时,您可以通过在代码的第一行添加以下内容来实现:ini\u set('display\u errors',1);