gpt4 book ai didi

php - 我应该何时何地使用 session_start?

转载 作者:行者123 更新时间:2023-12-02 20:41:57 26 4
gpt4 key购买 nike

我应该在何时何地使用 PHP 中的 session_start()

例如,假设我有一个登录脚本,它设置了一个 session 变量来判断用户是否登录。然后我必须将 session_start() 放在脚本的顶部,或者如果登录成功,就在我实际设置 session 变量之前?

<?php
// session_start(); here?

if (login($username, $password)) {
// session_start(); or here?

$_SESSION["username"] = $username;
}
?>

另一种情况是这样的,根据w3schools

Note: The session_start() function must be the very first thing in your document. Before any HTML tags.

最佳答案

正如其他人所说,您必须做的事情的绝对要求是:

  • 在读取或写入$_SESSION 之前,您必须运行session_start(否则它将只是一个普通数组,不会保存在任何地方)。
  • 您不得在单个脚本执行(页面加载)期间运行两次 session_start,除非您使用 session_write_close 将其关闭。

有一条额外的规则在技术上有异常(exception),但最好将其视为绝对规则:

  • 在写完任何输出(echo、PHP block 外的 HTML 等)后不要启动 session ,因为如果服务器已经启动,PHP 可能无法向浏览器发送 cookie发送内容。

您可能希望避免开始 session 的原因有两个:

  • PHP 在您打开 session 时锁定 session 以避免两个进程向其中写入冲突的数据,因此如果同时发生多个请求,您希望避免它们相互等待,除非它们确实需要。例如,如果您正在响应 AJAX 请求,并且不需要 session 中的任何数据,请不要打开它。
  • 正如 symcbean 所提到的,创建新 session 会产生一些成本,因此如果您的站点正忙于合法或恶意流量,您可能希望根本不启动它来提供一些登录页面或错误消息。<

在那之后,它变成了样式和架构的问题,但涵盖上述大部分内容的经验法则是“如果您确定页面需要它,请尽快”。

关于php - 我应该何时何地使用 session_start?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45869959/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com