繁体   English   中英

使用die()时php注册失败

[英]php registration fails to exit when using die()

我的PHP注册代码段无法正常工作。 当我输入已经使用的电子邮件和/或已经使用的用户名时,尽管我已经执行了IF语句来检查使用此名称或电子邮件的用户是否存在,但确实会重新注册用户。 这是一段代码:

if (isset($_POST['username'])) 
{
    $username = mysql_prep($_POST['firstname']);
    $password = mysql_prep($_POST['password']);
    $email    = mysql_prep($_POST['email']);
    $ip       = mysql_prep($_POST['ip']);
    $sex      = mysql_prep($_POST['sex']);

    $conn = mysql_connect(DB_HOST, DB_USER, DB_PASS);

    if ($conn) 
    {
        $select_db = mysql_select_db(DB_NAME, $conn);

        if ($select_db) 
        {
            $sql  = "SELECT id FROM users WHERE email = '{$email}'"
            $result = mysql_query($sql, $conn);
            if(mysql_num_rows($result) >= 1) 
            {
                die("Email already registered");
            }

            $sql  = "SELECT id FROM users WHERE username = '{$username}'"
            $result = mysql_query($sql, $conn);
            if(mysql_num_rows($result) >= 1) 
            {
                die("Username already exists");
            }

            $sql  = "INSERT INTO users (`username`, `password`, `email`)
                     VALUES ('{$username}', '{$password}', '{$email}' '{$sex}')"

            $result = mysql_query($sql, $conn);

            if($result)
            {
                echo "true";
            }
            else
            {
                echo "false";
            }

    }
    else
    {
        die("Cannot select database!<br />" . mysql_error());
    }
}
else 
{
    die("Cannot connect to database!<br />" . mysql_error());
}
}
else 
{
  echo "<h1>Sorry, you have no place here :)</h1>";
}

mysql_prep()是确保输入数据real_escape_string安全的函数。 有什么建议么?

要调试该错误,为什么不在浏览器中返回$ sql变量(die()之前的变量),然后将其复制并在phpmyadmin中查看输出。 如果返回,则继续前进,直到找到错误。 您也可以使用php的内置函数,但是我总是觉得这种方法更容易。

将这样的查询与串联运算符一起使用。

 $sql  = "SELECT id FROM users WHERE email = '".$email."'";

已编辑

$sql  = "SELECT id FROM users WHERE email = '{$email}'"
$sql  = "SELECT id FROM users WHERE username = '{$username}'"
$sql  = "INSERT INTO users (`username`, `password`, `email`) VALUES ('{$username}', '{$password}', '{$email}' '{$sex}')"

好的,将这些行替换为,然后再次检查,这最多需要2分钟

$sql  = "SELECT id FROM users WHERE email = '".$email."'";
$sql  = "SELECT id FROM users WHERE username = '".$username."'";
$sql  = "INSERT INTO users (`username`, `password`, `email`) VALUES ('".$username."', '".$password."', '".$email."' '".$sex."')";

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM