为什么 php 会话值在 Chrome 和 FireFox 中不同?
Why different php session value in Chrome and FireFox?
通过 ajax 将会话值设置为 10。
在 Chrome 中它将设置回零。为什么??
my.php
<?php
session_start();
$_SESSION["temp"] = 0; ?>
<div id="t">$_SESSION["temp"] = <?=$_SESSION["temp"]?> <br></div>
<br><input type="button" value="Plus 5" onclick="javascript:plusn(5);">
<script>
function plusn(n) {
$.ajax({
url: 'myajax.php?n='+n,
type: 'get',
async: false,
success:function(result){
$("#t").append(result)
}
});
}
$(document).ready(function() {
plusn(10); //initial add 10
})
</script>
myajax.php
<?php
session_start();
$_SESSION["temp"] += $_GET["n"];
exit('$_SESSION["temp"] = '.$_SESSION["temp"].'<br>');
?>
放置在这里:https://cmbody.com/my.php
请使用不同的浏览器进行检查。
Chrome、Edge 和 Android 手机得到错误的结果;
Firefox 和 iPhone 得到正确的结果。
P.S。使用 COOKIE
的相同条件
当我以 1000 毫秒的延迟发送它时,它工作正常,但这不是一个正确的解决方案,我将继续调查。
setTimeout(()=>{
plusn(10);
},1000)
罪魁祸首是:
<link rel="shortcut icon" href="#" />
浏览器尝试按照指示从同一个 URL 加载网站图标。为此,它向主 PHP 脚本执行附加请求。出现差异是因为 Firefox 使用缓存页面,而基于 Chrome 的浏览器获取新副本:
通过 ajax 将会话值设置为 10。 在 Chrome 中它将设置回零。为什么?? my.php
<?php
session_start();
$_SESSION["temp"] = 0; ?>
<div id="t">$_SESSION["temp"] = <?=$_SESSION["temp"]?> <br></div>
<br><input type="button" value="Plus 5" onclick="javascript:plusn(5);">
<script>
function plusn(n) {
$.ajax({
url: 'myajax.php?n='+n,
type: 'get',
async: false,
success:function(result){
$("#t").append(result)
}
});
}
$(document).ready(function() {
plusn(10); //initial add 10
})
</script>
myajax.php
<?php
session_start();
$_SESSION["temp"] += $_GET["n"];
exit('$_SESSION["temp"] = '.$_SESSION["temp"].'<br>');
?>
放置在这里:https://cmbody.com/my.php 请使用不同的浏览器进行检查。 Chrome、Edge 和 Android 手机得到错误的结果; Firefox 和 iPhone 得到正确的结果。 P.S。使用 COOKIE
的相同条件当我以 1000 毫秒的延迟发送它时,它工作正常,但这不是一个正确的解决方案,我将继续调查。
setTimeout(()=>{
plusn(10);
},1000)
罪魁祸首是:
<link rel="shortcut icon" href="#" />
浏览器尝试按照指示从同一个 URL 加载网站图标。为此,它向主 PHP 脚本执行附加请求。出现差异是因为 Firefox 使用缓存页面,而基于 Chrome 的浏览器获取新副本: