我有两个页面需要在它们之间传递会话信息。这是第一页。
<?php
session_start();
echo session_id()."<br>";
echo $_SESSION['test']."<br>";
第二页。
<?php
session_start();
echo session_id()."<br>";
$_SESSION['test'] = 'test';
echo $_SESSION['test'];
第二页位于不同的目录(同一个域),并启用了Windows身份验证。第一页使用匿名身份验证。从输出中我可以看到会话ID是相同的,但是第一页没有回显第二页的测试变量集。
我在Server 2012 R2上的IIS 8.5中运行PHP。
感谢任何帮助。
为了澄清,我先调用第二页,第一页不会显示变量。
答案 0 :(得分:0)
在使用之前,您需要先使用值初始化变量。
First run page2.php so, that value of $_SESSION['test'] is set to test
using $_SESSION['test'] = 'test';
Now, run page1.php there you can see the value of $_SESSION['test']
using echo $_SESSION['test']."<br>";
您也可以按照以下步骤以简单的方式使用会话,这样您就不必一次又一次地执行session_start()
1. config.php having session_start();
2. page1 having include_once('config.php');
echo session_id()."<br>";
echo $_SESSION['test']."<br>";
3. page2.php having include_once('config.php');
echo session_id()."<br>";
$_SESSION['test'] = 'test';
echo $_SESSION['test'];
答案 1 :(得分:0)
尝试在第一页关闭会话,当调用第二页时,您的会话文件仍然可能仍处于打开状态,因此您无法看到数据。尝试将session_write_close()添加到调用的第一页。
答案 2 :(得分:0)
问题在于会话保存路径的权限。我改变了两个目录可以写入的路径并且它可以工作。