从对象中分配$ _session var

时间:2014-10-19 00:34:45

标签: php mysql session mysqli session-variables

这是我正在处理的登录脚本;它使用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();
?>

提前致谢。

2 个答案:

答案 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";