我到底应该在何时何地使用session_start()PHP?
例如,假设我有一个登录脚本,它设置一个会话变量来判断用户是否登录。然后我必须将 放在session_start()脚本的顶部,还是仅在我实际设置会话变量之前(如果登录)那是成功的?
<?php
// session_start(); here?
if (login($username, $password)) {
// session_start(); or here?
$_SESSION["username"] = $username;
}
?>
Run Code Online (Sandbox Code Playgroud)
另一种情况是这样的,根据w3schools
注意: session_start() 函数必须是文档中的第一个函数。在任何 HTML 标记之前。
正如其他人所说,你必须做的绝对要求是:
session_start您必须在读取或写入之前运行$_SESSION(否则它将只是一个普通数组并且不会保存在任何地方)。session_start在单个脚本执行(页面加载)期间不得运行两次,除非您session_write_close在中间使用它来关闭它。有一条额外的规则在技术上有例外,但最好视为绝对的:
echo,因为如果服务器已经开始发送内容,PHP 可能无法将 cookie 发送到浏览器。您可能希望避免启动会话的原因有两个:
之后,它就变成了风格和架构的问题,但涵盖上述大部分内容的经验法则是“如果您确定页面需要它,请尽快”。