<?php
session_start();
include 'cardclass.php';
$cards = new deck();
$cards = unserialize($_SESSION['cards']);
$cards->drawCard();
$cards->pushBack();
$_SESSION['cards'] = serialize($cards);
exit();
?>
我有一个php页面,创建一个套牌然后随机播放然后存储在会话中。现在我有了这个代码,它获取会话对象绘制卡片并将卡片放到卡片的后面,然后保存到会话。现在,当我打电话给我4次时,我得到“4颗心4颗心4颗心4颗”,而不是4张不同的卡片。我相信它,因为它没有正确地保存会话。
编辑:
function dealCard(){
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
document.getElementById("computer").innerHTML+=xmlhttp.responseText;
}
}
xmlhttp.open("GET","dealcard.php",true);
xmlhttp.send();
}
我觉得这与它有关
答案 0 :(得分:0)
function dealCard(){
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET","dealcard.php",false);
xmlhttp.send();
document.getElementById("computer").innerHTML+=xmlhttp.responseText;
}
将我的js功能更改为此功能,现在可以使用了。异步正在弄乱它。
答案 1 :(得分:-1)
我在这里看不到任何可能影响会话处理的内容,你确定甲板课程按照要求工作吗? 尝试在单个PHP脚本中多次运行drawCard()和pushBack()并检查结果。
编辑:由于他删除了答案,因此在此行之下不再相关。
knizhnikov在他的回答中说的似乎并不适用于此,在PHP脚本完成后,会话变量的更改会在服务器端保存。如果在发送输出后运行session_start(),则只会出现问题,因为该函数需要发送cookie标头。