如何用JavaScript获取PHP的session id?AJAX请求返回空值如何解决
问题根因
PHP 要读取、操作会话数据,必须先在当前请求的脚本执行流程中调用 session_start() 初始化会话,你遇到的两种场景返回结果不一致,是请求上下文差异导致的:
- 当你在
index.php中用include("closeuser.php")引入文件时,两个文件属于同一个HTTP请求的执行上下文,即使你注释了index.php开头的session_start(),大概率是你引入的Connections/swag.php内部已经执行了会话初始化逻辑,所以同上下文下的closeuser.php调用session_id()可以正常拿到值。 - 当你用AJAX独立请求
closeuser.php时,这是一个完全独立的新HTTP请求,closeuser.php自身没有执行会话初始化,也没有引入包含会话初始化逻辑的公共文件,所以session_id()会返回空字符串;而普通的字符串输出不受会话逻辑影响,因此可以正常返回。
解决方法
在closeuser.php文件的最顶部补充会话初始化逻辑即可,修改后的代码如下:
<?php // 初始化当前请求的会话,才能读取到当前用户的会话ID if (session_status() === PHP_SESSION_NONE) { session_start(); } echo "a2"; $a = session_id(); echo $a; ?>
如果你的项目有统一的公共文件(比如Connections/swag.php)已经包含了会话初始化逻辑,也可以直接在closeuser.php顶部引入该公共文件,效果一致。
内容的提问来源于stack exchange,提问作者julio fernandez
相关产品推荐
相关产品推荐

