页面重载时PHP Session返回异常值问题求助
PHP Session 计数器异常问题
问题现象
- 页面加载时创建Session计数器,预期每次加载递增,但出现异常:
- 带
init变量的测试代码:首次加载返回0,重载页面后始终返回固定值2 - 移除
init变量的测试代码:首次及后续加载均返回2 - 补充测试:若不执行递增操作,Session返回1;执行递增后得到2
- 带
- 大型脚本中通过AJAX调用Session时表现符合预期,但重载页面后变量直接返回1
- 已确认Session ID前后完全一致(始终为
tglih5gq8eeau35fidanl65nfr),运行环境为XAMPP 8.2.4.0,重装环境后问题仍存在
测试代码
测试代码1(test.php)
首次加载返回0,后续加载均返回2
<?php session_start() ; if (!isset($_SESSION["init"])) { $_SESSION["init"] = true ; $_SESSION["quiz_number"] = 0 ; } else { ++$_SESSION["quiz_number"] ; } echo ($_SESSION["quiz_number"]) ; ?>
测试代码2
始终返回2
<?php session_start() ; if (!isset($_SESSION["quiz_number"])) { $_SESSION["quiz_number"] = 0 ; } else { ++$_SESSION["quiz_number"] ; } echo ($_SESSION["quiz_number"]) ; ?>
AJAX相关代码
AJAX调用函数
var load_prs = function( data_func , loc ) { var parsreq = new XMLHttpRequest() ; parsreq.onreadystatechange = function() { if ( (parsreq.readyState === 4) && (parsreq.status === 200) ) { data_func(parsreq.responseText) ; } } ; parsreq.open("POST" , loc , true) ; parsreq.send() ; } ;
调用语句
load_prs(displayResults, "test.php") ;
结果接收函数
function displayResults(response) { console.log(response) ; }
额外测试尝试
- 尝试将值存储为带前缀(qn:)的字符串后拆分,重载后仍仅返回1
- 存储字符串测试代码:首次加载返回"qn:0",重载后返回1
<?php session_start() ; if (!isset($_SESSION["init"])) { $_SESSION["init"] = true ; $_SESSION["quiz_number"] = "qn:0" ; $qn = $_SESSION["quiz_number"] ; } else { $qn = $_SESSION["quiz_number"] ; } echo ($qn) ; ?>
- Session ID测试代码:首次及重载后均返回
tglih5gq8eeau35fidanl65nfr
<?php session_start() ; if (!isset($_SESSION["init"])) { $_SESSION["init"] = true ; $_SESSION["quiz_number"] = 0 ; } else { ++$_SESSION["quiz_number"] ; } echo (session_id()) ; ?>
已查阅Stack Overflow及PHP官方Session文档,未找到相关解决方案。
内容的提问来源于stack exchange,提问作者Xavier
相关产品推荐
相关产品推荐

