1

我在访问会话变量值时遇到问题。

我正在创建一个登录页面,这是我设置会话变量的值。

索引.php

    $row = mysqli_fetch_array($result);
    if(mysqli_num_rows($result) > 0){
        session_regenerate_id();
        $user = mysqli_fetch_assoc($result);
        $_SESSION['SESS_ID'] = $user['id'];
        $_SESSION['SESS_UNAME'] = $user['username'];
        $_SESSION['SESS_PASS'] = $user['password'];
        session_write_close();
        header("location:home.php");
        exit();
    }

主页.php

<?php
session_start();
if(!isset($_SESSION['SESS_ID']) || (trim($_SESSION['SESS_ID'])) == ''){
    header("location:index.php");
    exit();
}
?>
<html>
<body>
    <p>Login Successful</p>
</body>
</html>

这里的问题是我在 $_SESSION['SESS_ID'] 中没有任何价值。所以我如何在 home.php 中获取或访问此会话变量的值?

4

3 回答 3

2

删除$row = mysqli_fetch_array($result);线。

您的会话未设置的原因是因为$row = mysqli_fetch_array($result);对内部数据指针的调用$result已经提前,并且您$user = mysqli_fetch_assoc($result);没有您期望的值,这就是您设置的所有会话变量为空的原因。

于 2013-08-16T05:50:00.303 回答
1

索引.php

session_start();
$row = mysqli_fetch_array($result);
    if(mysqli_num_rows($result) > 0){
        session_regenerate_id();
        $user = mysqli_fetch_assoc($result);
        $_SESSION['SESS_ID'] = $user['id'];
        $_SESSION['SESS_UNAME'] = $user['username'];
        $_SESSION['SESS_PASS'] = $user['password'];
        session_write_close();
        header("location:home.php");
        exit();
    }

session_start()在 index.php 上添加

于 2013-08-16T05:45:28.567 回答
1

当 Session 变量没有存储数据时,导致这种结果的唯一问题。你的代码是写的。请检查您的 index.php 中的 session_start(): 在顶部。

于 2016-04-20T07:24:09.623 回答