我的会话变量出现问题。
我需要一次后才能设置任何变量。 但我需要在登录后存储我的数据。
以下是代码:
<?php include "include/header.php";
require_once('simplesamlphp/lib/_autoload.php');
$as = new \SimpleSAML\Auth\Simple('default-sp');
$as->requireAuth();
$attributes = $as->getAttributes();
$_SESSION["nivauth"] = "test";
?>
编辑:
echo $_SESSION["nivauth"];
我在其他页面上出现此错误:
Notice: Undefined index: nivauth in /var/www/html/cableEdit.php on line 10
我的会话var nivauth仅在我的第一页上提供。
我的session_start()正在运行,我可以查看在其他页面上创建的所有其他会话变量。
如果我将$_SESSION["nivauth"] = "test";
放在包含的内容下,一切正常,但我无法通过身份验证获得nivauth。
已创建var但无法在其他页面上访问...
答案 0 :(得分:1)
请参阅this part of the documentation
如果我们在SimpleSAMLphp和我们正在保护的应用程序中使用PHP会话,SimpleSAMLphp将在第一次调用时关闭任何现有会话,之后会以自己的会话为准。如果要在调用SimpleSAMLphp后恢复自己的会话,可以通过清理会话来实现:
$session = SimpleSAML_Session::getSessionFromRequest(); $session->cleanup();
如果您没有清理SimpleSAMLphp的会话并尝试使用$ _SESSION,那么您将无法使用自己的会话,并且您的所有数据都可能丢失或无法访问。
答案 1 :(得分:1)
我遇到了 SimpleSamlPHP 的类似问题。在尝试了各种解决方案后,最终以下解决方法解决了我的问题。
在您的 header.php(或其他页面)中,通过添加以下两行而不是 session_start();
启动 SimpleSamlPHP 类,您可以与 simplesamlphp 会话一起恢复您的自定义会话变量。
require_once('simplesamlphp/lib/_autoload.php');
$as = new \SimpleSAML\Auth\Simple('default-sp');
这是片段。
<?php
//header.php
//session_start();
require_once('simplesamlphp/lib/_autoload.php');
$as = new \SimpleSAML\Auth\Simple('default-sp');
echo $_SESSION["nivauth"];
答案 2 :(得分:0)
cleanup() 根本不起作用所以除了 $session->cleanup() 之外,我还做了两个更改以使其起作用
1- config/config.php 中的空 session.phpsession.cookiename
'session.phpsession.cookiename' => ''
2- 添加 session_start();清理后()
$session = SimpleSAML_Session::getSessionFromRequest();
$session->cleanup();
//session_write_close();
session_start();