注册表单表示用户名不存在时已被使用

时间:2016-04-13 18:58:03

标签: 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 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);
    });

HTML & JS

和php: PHP

我的问题是,无论注册中的字段包含什么和/或用户名是否在数据库中,我都会得到同样的错误:

此用户名已经注册!请再试一次!

1 个答案:

答案 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?