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