【发布时间】:2017-08-25 18:56:57
【问题描述】:
在 PHP 中我应该在何时何地使用session_start()?
例如,假设我有一个登录脚本,它设置了一个会话变量来判断用户是否登录。然后我必须将session_start() 放在脚本的顶部,或者仅在我实际设置之前登录成功时的会话变量?
<?php
// session_start(); here?
if (login($username, $password)) {
// session_start(); or here?
$_SESSION["username"] = $username;
}
?>
另一种情况是,根据 w3schools 的说法
注意: session_start() 函数必须是文档中的第一部分。在任何 HTML 标记之前。
【问题讨论】:
-
至于您的问题,您可以在任何地方开始会话,但请注意会话必须在任何输出之前启动。因此,在页面顶部开始会话被认为是一种合理的方法。
-
并且您应该在使用任何会话变量之前开始您的会话。
-
您也只能拨打
session_start()一次。多次调用会报错。 -
@u_mulder 我添加了一个额外的想法
-
@super w3schools 因提供错误信息而臭名昭著。没有理由认为它必须是您文档中的第一件事。唯一重要的是它出现在任何页面内容发送之前,无论是 HTML 还是其他任何内容。