Main.php为什么两次重新加载页面后会话变量发生变化?
<?php
session_start();
msgbox("Are you sure?", "confirm");
$Result = $_SESSION['id'] ;
print "<p id='txt'> </p>";
if($Result == 1)
echo "Result is true";
elseif ($Result == 2)
print "<br><br>Return value is '$Result'";
function msgbox($msg, $type)
{
if ($type == "confirm")
{
print "<script src='Validate.js'></script>";
print "<script> ret = confirm ('$msg') ;
if (ret)
Write_to_variable('1');
else
Write_to_variable('2');
</script>";
?>
Validate.js
function Write_to_variable(value)
{
if (window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
}
else
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("txt").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","Variable.php?id="+value,true);
xmlhttp.send();
}
Variable.php
<?php
session_start();
if ($_GET['id'])
{
$_SESSION['variable'] = $_GET['id'];
print $_SESSION['variable'];
}
?>
我所试图做的是,
从javascript确认框中获取值并使用Ajax将确认框的返回值存储到php SESSION
变量中。在Ajax文件中,我只指定$_SESSION['id']= $_GET['id']
。当程序执行时,我从确认框中按下OK
。它将1
分配给会话变量id
。如果我下次按cancel
该值没有改变,当我试图按cancel
另一次,会话的值已更改为id
为2.问题是什么,任何建议和解决方案都会被接受。
我无法找到隐藏在它背后的逻辑。我可以清楚地看到什么是返回和什么是ajax返回,但main.php中使用的会话变量在第二次点击后发生变化。
在此先感谢。
的引号的'打印“搞砸了<素文字SRC = Validate.js'线。 – Barmar 2014-10-30 08:55:14
是'$ _SESSION ['id'] = $ _GET ['id']'而不是'S_SESSION ['id'] = $ _GET ['id']' – R3tep 2014-10-30 09:07:16
所做的更改请...任何帮助? – 2014-10-30 09:38:38