首页 > 解决方案 > 为什么要测试以查看会话是否已启动

问题描述

这是来自官方 php 手册

session_start() 根据通过 GET 或 POST 请求或通过 cookie 传递的会话标识符创建会话或恢复当前会话。

我在我读过的所有 php 编程书籍中都看到了代码,它们以以下方式开始代码页面:

<?php
session_start();
?>

但我在这里看到开发人员正在检查会话是否已启动的帖子。

if (session_id() == '') {
    session_start();
}

该手册似乎建议session_start()为您进行检查,如果未启动,则它会自行启动。

那么,谁是正确的呢?

标签: phpsession

解决方案


那是因为您不能sesseion_start()在同一个脚本上多次调用。

让我们假设我们有一个脚本index.php女巫包含另一个脚本frontController.php并且都有一个会话开始

如果您不验证并尝试启动另一个会话,PHP 将抛出如下通知:

A session had already been started - ignoring session_start() in frontController.php:80


推荐阅读