【问题标题】:assign $_session var from object从对象分配 $_session var
【发布时间】:2014-10-19 00:34:44
【问题描述】:

这是我正在处理的登录脚本;它使用 mysqli(我知道它不如 PDO 安全) 运行 MySQL 查询后,我是 fetch_object()。然后我分配 $_session 来保存用户 ID 和电子邮件。 $_SESSION['uid'] = $user->ID 有效但 $_SESSION['uemail'] = $user->email.这可能是因为电子邮件存储在对象 $user 中吗?我必须以某种方式转换它吗?

email 在数据库中存储一个 varchar(255) ID 是一个 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();
?>

提前致谢。

【问题讨论】:

  • "SELECT ID, email FROM... - 因为您还需要选择 email 列。
  • 谢谢;我只是要把它改成*。
  • 如果你回答了这个问题,我会给你信用。
  • 已经完成了,干杯。
  • 信用 = +1 ?哈哈,没问题;)问题已经解决了。

标签: php mysql session mysqli session-variables


【解决方案1】:

评论回答:

您需要选择要查询的列:

SELECT ID, email FROM ...

这就是$_SESSION['uemail'] = $user-&gt;email ; 失败的原因。

要么选择有问题的特定列,要么SELECT * 也可以。

但是,之前已经说过,不建议使用*,因此请选择实际的列。

【讨论】:

    【解决方案2】:

    您没有从数据库中选择电子邮件列。

    试试:

    $query = "SELECT ID, email FROM user WHERE username = '$username' AND password = '$password' LIMIT 1";
    

    【讨论】:

    • 我现在觉得自己很蠢。我只是要把它改成*。
    • Yeah, I said that 4 分钟前。
    猜你喜欢
    • 1970-01-01
    • 2020-06-17
    • 2020-10-13
    • 1970-01-01
    • 2019-01-08
    • 2010-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多