这是我正在处理的登录脚本;它使用mysqli(我知道它不如PDO安全) 运行MySQL查询后,我是fetch_object()。我正在分配$ _session来保存用户ID和电子邮件。 $ _SESSION ['uid'] = $ user-> ID有效,但不是$ _SESSION ['uemail'] = $ user->电子邮件。这可能是因为电子邮件存储在对象$ user中?我必须以某种方式转换它吗?
电子邮件是商店,数据库ID中的varchar(255)是int(11)。
<?php
include_once("config.php");
$username = $_POST['username'];
$password = sha1($_POST['password']);
$query = "SELECT ID FROM user WHERE username = '$username' AND password = '$password' LIMIT 1";
if ($result = $db->query($query)) {
while ($user = $result->fetch_object()) {
$_SESSION['uid'] = $user->ID;
$_SESSION['uemail'] = $user->email ;
header("Location: index.php");
//exit();
}
}else {
echo "Invalid login information. Please return to the previous page.";
//exit();
}
//var_dump(get_object_vars($result));
//$db->close();
?>
提前致谢。
答案 0 :(得分:2)
评论回答:
您需要选择要查询的列:
SELECT ID, email FROM ...
这就是$_SESSION['uemail'] = $user->email ;
失败的原因。
选择相关的特定列,或者SELECT *
也可以。
然而,之前已经说过,建议不要使用*
,因此请选择实际的列。
答案 1 :(得分:1)
您没有从数据库中选择电子邮件列。
尝试:
$query = "SELECT ID, email FROM user WHERE username = '$username' AND password = '$password' LIMIT 1";