SESSION变量无法正常工作后需要SIMPLESAMLPHP

时间:2018-06-14 08:47:49

标签: php session session-variables simplesamlphp

我的会话变量出现问题。

我需要一次后才能设置任何变量。 但我需要在登录后存储我的数据。

以下是代码:

<?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";

?>

编辑:

  • session_start()位于header.php
  • 我尝试使用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但无法在其他页面上访问...

3 个答案:

答案 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();