session_start()创建一个会话,或基于通过GET或POST请求传递或通过cookie传递的会话标识符恢复当前会话。
我在所有阅读过的php编程书籍中都看到了代码,这些代码以以下内容开始了代码页面:
<?php
session_start();
?>
但是我在这里看到了一些帖子,开发人员正在检查这些帖子以查看会话是否已经开始。
if (session_id() == '') {
session_start();
}
该手册似乎建议session_start()
为您进行检查,如果未启动,则它将自己启动。
那么,谁是正确的?
答案 0 :(得分:4)
这是因为您不能在同一脚本上多次调用sesseion_start()
。
让我们假设我们有一个脚本index.php
,女巫包括了另一个脚本frontController.php
并且都具有会话开始
如果您不验证并尝试启动另一个会话,PHP会发出如下通知:
A session had already been started - ignoring session_start() in frontController.php:80
答案 1 :(得分:0)
因为您不能两次启动会话:
session_start();
session_start();
注意:session_start():会话已经开始-忽略
当文档说 session_start()
创建会话或恢复当前会话时,这隐含着无法创建或恢复已经启动的会话。
这可能是设计混乱的迹象,也可能是防御性编码方法,可能无法启用session.auto_start
。
我尤其从来不这样做。如果不确定session.auto_start
,则只需在应用程序级别禁用指令即可。