php - 为什么要测试以查看会话是否已启动
问题描述
这是来自官方 php 手册:
session_start() 根据通过 GET 或 POST 请求或通过 cookie 传递的会话标识符创建会话或恢复当前会话。
我在我读过的所有 php 编程书籍中都看到了代码,它们以以下方式开始代码页面:
<?php
session_start();
?>
但我在这里看到开发人员正在检查会话是否已启动的帖子。
if (session_id() == '') {
session_start();
}
该手册似乎建议session_start()
为您进行检查,如果未启动,则它会自行启动。
那么,谁是正确的呢?
解决方案
那是因为您不能sesseion_start()
在同一个脚本上多次调用。
让我们假设我们有一个脚本index.php
女巫包含另一个脚本frontController.php
并且都有一个会话开始
如果您不验证并尝试启动另一个会话,PHP 将抛出如下通知:
A session had already been started - ignoring session_start() in frontController.php:80
推荐阅读
- java - Dead store to List object - how to solve?
- ios - Elements not connecting to the view
- java - 如何保护移动应用程序的 API REST?(如果嗅探请求给了你“钥匙”)
- ruby - How to add custom properties on docx files in ruby
- javascript - How to handle large image files in file input JavaScript
- python - 无法使用 Python 在过去 1 小时内从 Outlook 读取电子邮件
- python - Cookie 未在 starlette TestClient 上设置,请求通过 Python 请求发送
- python - 使用 Python 选择和比较两个文件 MD5
- continuous-integration - 如何在 GitLab 运行器中将标准错误重定向到标准输出
- c# - Lambda 参数名称(有时)与本地名称冲突