2014-10-30 74 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

相关问题