PHP 会话变量和身份验证
PHP Sessions Variables & Authentication
我有两个页面需要在它们之间传递会话信息。这是第一页。
<?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 是相同的,但是第一页没有回显第二页中设置的测试变量。
我 运行 PHP 在 Server 2012 R2 上的 IIS 8.5 中。
感谢任何帮助。
澄清一下,我先调用第二页,第一页不会显示变量。
您需要先用一个值初始化变量,然后再使用它。
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'];
尝试在第一页关闭您的会话,可能在调用第二页时您的会话文件仍处于打开状态,因此您看不到数据。尝试将 session_write_close() 添加到调用的第一个页面。
问题出在会话保存路径的权限上。我将路径更改为两个目录都可以写入的位置并且它有效。
我有两个页面需要在它们之间传递会话信息。这是第一页。
<?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 是相同的,但是第一页没有回显第二页中设置的测试变量。
我 运行 PHP 在 Server 2012 R2 上的 IIS 8.5 中。
感谢任何帮助。
澄清一下,我先调用第二页,第一页不会显示变量。
您需要先用一个值初始化变量,然后再使用它。
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'];
尝试在第一页关闭您的会话,可能在调用第二页时您的会话文件仍处于打开状态,因此您看不到数据。尝试将 session_write_close() 添加到调用的第一个页面。
问题出在会话保存路径的权限上。我将路径更改为两个目录都可以写入的位置并且它有效。