【问题标题】:Trouble storing user details in to $_SESSION无法将用户详细信息存储到 $_SESSION
【发布时间】:2015-07-25 09:18:47
【问题描述】:

几天来,我一直在绞尽脑汁,试图将从数据库查询中获取的用户详细信息存储到 $_SESSION 变量中。

我在完成网站另一部分的构建时将其放在次要位置,并使用我输入的虚拟数据对其进行测试。

代码可以很好地处理虚拟数据,但是当我尝试在其中实现查询结果时无法运行。我试过跟随其他人如何设置它,但我的就是不起作用。

这是我的脚本,其中包含有效的虚拟数据:

$query = "SELECT * FROM members WHERE Email='$Email' AND Activation IS NULL";
$result = $dbc->query($query);
$password_match = 0;

if ($result->num_rows > 0) {
    while ($row = $result->fetch_assoc()) {
        $password_match = password_verify($Password, $row["Password"]);
        }
        if ($password_match) {
            $_SESSION["Username"] = "Members username"; 
            header("Location: page.php");
        }
        else {
            $msg_error= 'Either Your Account is inactive or Email address /Password is Incorrect';
        }
}

这里的虚拟数据是“会员用户名”,我希望它存储从“用户名”列作为查询的一部分检索到的值。

我尝试了很多方法,最近使用的是这个:

$_SESSION["Username"] = $row["Username"];

但是没有运气。

任何指针都非常感谢!

【问题讨论】:

  • 你开始会话了吗?
  • 在将变量加载到Session之前,您可能需要添加此session_start();
  • 您是否使用echo $row["Username"] 之类的方法来验证您的变量是否为空?你在 page.php 中也有session_start() 吗?
  • 我已经在页面前面使用session_start(); 开始了会话。正如我所说,我当前设置的会话有效并将其带到登录页面,并将显示“成员用户名”来代替我想要的位置。我还没有回应它,但鉴于查询的其余部分工作正常(即我可以从此查询中检索密码)并且数据库中的用户名不是空的,我想它可以工作。我现在试试 echo 看看。

标签: php session mysqli


【解决方案1】:

试试这个...你不是从循环内部获取行,

$query = "SELECT * FROM members WHERE Email='$Email' AND Activation IS NULL";
$result = $dbc->query($query);
$password_match = 0;

if ($result->num_rows > 0) {
    while ($row = $result->fetch_assoc()) {
        $password_match = password_verify($Password, $row["Password"]);

        if ($password_match) {
            $_SESSION["Username"] = "Members username"; 
            header("Location: page.php");
        }
        else {
            $msg_error= 'Either Your Account is inactive or Email address /Password is Incorrect';
        }
}}

【讨论】:

  • 这只是其中一件如此简单的事情,但在盯着代码几天后,我完全错过了它。这非常有效。
猜你喜欢
  • 2023-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-05
  • 1970-01-01
相关资源
最近更新 更多