0

我是会话的初学者。我正在尝试构建一个身份验证系统,如果用户可以成功登录,它会为用户提供一个会话,并且该会话用于识别当前用户的身份。因此,如果登录成功:

$_SESSION['id'] = $username;

我还将 session_start() 放在 header.php 文件中,该文件包含在用户浏览的每个页面中。但是,在分配会话后,当我尝试检查它时,

isset($_SESSION['id'])

每次都返回 false。为了维持会话,我有什么特别要做的吗?谢谢和抱歉,这是一个菜鸟问题。

4

1 回答 1

0

确保session_start()在所有页面的顶部调用。

有关基本用法,请参阅手册

会话是根据唯一会话 ID 为单个用户存储数据的简单方法。这可用于在页面请求之间保持状态信息。会话 ID 通常通过会话 cookie 发送到浏览器,并且 ID 用于检索现有的会话数据。ID 或会话 cookie 的缺失让 PHP 知道要创建一个新会话,并生成一个新的会话 ID。

会话遵循简单的工作流程。当会话启动时,PHP 将使用传递的 ID 检索现有会话(通常来自会话 cookie),或者如果没有传递会话,它将创建一个新会话。PHP 将在会话开始后使用任何会话数据填充 $_SESSION 超全局变量。当 PHP 关闭时,它会自动获取 $_SESSION 超全局变量的内容,将其序列化,并使用会话保存处理程序将其发送到存储中。

默认情况下,PHP 使用由 session.save_handler 设置的内部文件保存处理程序。这会将会话数据保存在服务器上 session.save_path 配置指令指定的位置。

可以使用 session_start() 函数手动启动会话。如果 session.auto_start 指令设置为 1,会话将在请求启动时自动启动。

会话通常在 PHP 完成执行脚本时自动关闭,但可以使用 session_write_close() 函数手动关闭。

Example #1 使用 $_SESSION 注册一个变量。

<?php
session_start();
if (!isset($_SESSION['count'])) {
  $_SESSION['count'] = 0;
} else {
  $_SESSION['count']++;
}
?>
于 2013-02-11T02:30:10.820 回答