php页面之间的不同会话ID

时间:2016-04-19 15:25:44

标签: php ajax

我想通过$SESSION变量在页面之间共享变量。在file1.php我有

<?php session_start();
   require_once('connect.php');
   global $gb;
   $_SESSION['myvar'] = "somestring";
   // Some other code
?>

在我的第二篇fille2.php中,我有

<?php session_start();
   require_once('connect.php');
   $myvar = $_SESSION['myvar'];
?>

并且$myvar为空。我首先对file1.php进行ajax调用,然后对file2.php进行调用。我试过回应session_id()而且它有所不同。这有什么不对?

编辑:我正在从localhost调用我的服务器端PHP脚本,如果重要的话,使用启用了CORS插件的Chrome

2 个答案:

答案 0 :(得分:2)

我不确定你的意思,但是如果我理解得正确的话,两个文件都是由js脚本使用AJAX调用的。如果您可以在执行调用的地方包含js代码,那将非常有用。无论如何,我很确定第二个文件是在第一个文件之前下载的。您可以采取的解决方法是在另一个文件或当前文件的顶部抽象session_start()$_SESSION['myvar']变量声明,例如在名为'session_init.php'的文件中。看起来像这样:

session_init.php:

<?php

//init session and session variable
session_start(); 
/* $_SESSION['myvar'] = 'value'; */ 

您当前的文件(您发出AJAX请求的文件):

<?php

//include this folder on the top of the page where the ajax petition is made
require_once('session_init.php');
$_SESSION['myvar'] = 'Some Value';
?>

<script type="text/javascript">

  //js code to make ajax petitio to file 1

  $.ajax({

    //parameters and other stuff

    success : function(resp){

          //js code to make ajax petition to file 2
          $.ajax({

             //parameters and other stuff
          });
      }
  })
 </script>

只要您在每个文件的顶部声明$_SESSION['myvar'],就可以在两个文件中访问session_start()。请记住,嵌套AJAX请求不是一个好习惯。您也可以采用不同的方法通过文件发送数据,例如,将'myvar'的值作为AJAX请求的参数发送。

答案 1 :(得分:1)

听起来你没有从发出AJAX调用的文件中调用session_start(),这将导致两个不同的会话。那,或者您正在connect.php

内的某处重新生成会话ID

如果这对您解决问题没有帮助,请提供所有相关代码,以便我可以尝试重现。