我想通过$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
答案 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
如果这对您解决问题没有帮助,请提供所有相关代码,以便我可以尝试重现。