如何检查 PHP 会话是否已启动,并避免“headers already sent”错误
大家好!我是 PHP 新手,正在编写一个带授权的小网站。我有几个处理会话的脚本。在一个文件中,我使用 session_start() 启动会话,然后通过 include 引入其他文件。问题是,如果我在不同文件中不小心两次调用 session_start(),PHP 会报错:
Warning: session_start(): Cannot send session cookie - headers already sent
我知道这个错误是因为 headers 已经发送,无法再次调用 session_start()。但我该如何检查会话是否已启动,以避免重复调用 session_start()?我试过在开头使用 @ 来抑制错误,但据我所知这是不好的做法。
以下是我的代码示例:
// config.php
session_start();
$_SESSION['user'] = 'admin';
// page.php
include 'config.php';
session_start(); // 如果 config.php 已经调用了 session_start(),这里会报错
我需要类似这样的判断:if (session_not_started