【发布时间】:2017-05-03 17:54:08
【问题描述】:
这是我的登录密码
global $connection;
if (isset($_POST['user_login'])) {
$email = $_POST['email'];
$password = $_POST['password'];
$password= md5($password);
$login = mysqli_query($connection, "SELECT * FROM user WHERE email ='{$email}' AND password = '{$password}' ");
if(!$login) {
die("QUERY FAILED" . mysqli_error($connection));
}
if(!$login || mysqli_num_rows($login) == 0) {
echo "<div class='alert alert-danger' role='alert'> <strong>Your Username or Password is invalid!</strong></div>";
} else {
$_SESSION['user_id'] = $user_id;
$_SESSION['email'] = $email;
$_SESSION['username'] = $username;
header('Location: index.php');
}
}
我使用 print_r 函数显示所有会话,但只有会话电子邮件被声明。为什么没有声明 user_id 和用户名?我做错了什么?
【问题讨论】:
-
您开始会话了吗?对我来说不像
-
您的代码容易受到SQL injection 攻击。您应该使用mysqli 或PDO 准备好的语句和this post 中所述的绑定参数。
-
MD5 不足以进行密码散列。请改用
password_hash()和password_verify()。 -
或您的 POST 阵列失败。和
$user_id -
您不会在任何地方定义
$user_id或$username。你认为他们来自哪里?
标签: php session session-variables