Avatar ·

如何检查 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