PHP会话变量&认证

时间:2015-11-25 17:09:40

标签: php session windows-server-2012-r2 iis-8.5

我有两个页面需要在它们之间传递会话信息。这是第一页。

<?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。

感谢任何帮助。

为了澄清,我先调用第二页,第一页不会显示变量。

3 个答案:

答案 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()添加到调用的第一页。

http://php.net/manual/en/function.session-write-close.php

答案 2 :(得分:0)

问题在于会话保存路径的权限。我改变了两个目录可以写入的路径并且它可以工作。