我刚刚完成了远程服务器的设置。设置LAMP,转移我的网站。我可以很好地登录用户但由于某种原因我的代码在插入数据时返回错误。如果用户已经存在,它会通过代码并返回错误,所以我确定它会停止并在该行之后返回错误。
$sql = "INSERT INTO users (user_name, email, password, hash) "
. "VALUES ('$user_name','$email','$password', '$hash')";
反过来又返回错误:
else {
$_SESSION['message'] = 'Registration failed!';
header("location: error.php");
}
以下完整代码。
<?php
$_SESSION['email'] = $_POST['email'];
$_SESSION['user_name'] = $_POST['user_name'];
// Escape all $_POST variables to protect against SQL injections
$user_name = $mysqli->escape_string($_POST['user_name']);
$email = $mysqli->escape_string($_POST['email']);
$password = $mysqli->escape_string(password_hash($_POST['password'], PASSWORD_BCRYPT));
$hash = $mysqli->escape_string( md5( rand(0,1000) ) );
// Check if user with that email already exists
$result = $mysqli->query("SELECT * FROM users WHERE email='$email'") or die($mysqli->error());
if ( $result->num_rows > 0 ) {
$_SESSION['message'] = 'User with this email already exists!';
header("location: error.php");
}
else { // Email doesn't already exist in a database, proceed...
$sql = "INSERT INTO users (user_name, email, password, hash) "
. "VALUES ('$user_name','$email','$password', '$hash')";
// Add user to the database
if ( $mysqli->query($sql) ){
$_SESSION['active'] = 0;
$_SESSION['logged_in'] = true;
}
else {
$_SESSION['message'] = 'Registration failed!';
header("location: error.php");
}
}
?>