[英]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.