2014-10-30 101 views
0

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中使用的會話變量在第二次點擊後發生變化。

在此先感謝。

+1

的引號的'打印「搞砸了<素文字SRC = Validate.js'線。 – Barmar 2014-10-30 08:55:14

+1

是'$ _SESSION ['id'] = $ _GET ['id']'而不是'S_SESSION ['id'] = $ _GET ['id']' – R3tep 2014-10-30 09:07:16

+0

所做的更改請...任何幫助? – 2014-10-30 09:38:38

回答

0

似乎沒有什麼不妥只是嘗試

  1. 控制檯登錄您的Java腳本參數並檢查錯誤

  2. 使用的警報和檢查什麼什麼樣的價值傳遞給AJAX文件

3.在您的ajax文件中使用die()並檢查不匹配。

+0

ajax和ajax的返回值沒有問題但是在main.php中使用的會話變量在第二次點擊後發生了變化 – 2014-10-30 11:05:41

+0

嘗試使用兩個不同名稱的會話並檢查同樣發生 – Ronser 2014-10-30 11:24:06

相關問題