Php 为什么不是';t$\u会话数据是否传递到函数文件的所有部分?
我重新编写了很多登录脚本,并在我们的一个内部站点上运行了一个像这样设置的大型函数文件Php 为什么不是';t$\u会话数据是否传递到函数文件的所有部分?,php,class,session-variables,Php,Class,Session Variables,我重新编写了很多登录脚本,并在我们的一个内部站点上运行了一个像这样设置的大型函数文件 阶级 作用 作用 类 阶级 类验证用户 阶级 阶级 我运行了一个脚本,用于检索SSO$\u会话数据,并希望将其从SSO服务器传递到用户会话 我尝试在文件的不同部分运行脚本,但得到了相同的结果。它在某些地方有效,而在其他地方无效 我可以将所有$\u会话变量回显到HTML页面 我还可以在某些类中使用$\u会话数据(无论我把它放在哪里,都是一样的) 然而,我真正需要使用的类-验证用户-所有内容都为空 我是否遗
- 阶级
- 作用
- 作用
- 类
- 阶级
- 类验证用户
- 阶级
- 阶级
$\u会话
数据,并希望将其从SSO服务器传递到用户会话
我尝试在文件的不同部分运行脚本,但得到了相同的结果。它在某些地方有效,而在其他地方无效
我可以将所有$\u会话
变量回显到HTML页面
我还可以在某些类中使用$\u会话
数据(无论我把它放在哪里,都是一样的)
然而,我真正需要使用的类-验证用户-所有内容都为空
我是否遗漏了一些内容(请不要告诉我将会话_start();
放入)
我认为$\u SESSION
数据是超全局的。检索到的$\u会话
数据也是超全局的吗
如果不是,我需要做什么才能让它超全球化
下面是我用来检索要传递的会话数据的脚本-
session_start();
$appKey = "00000000Uz";
$safeurl = 'https://safe.000000.com/login/sso/SSOService?app=playbooks';
// first call back after safe login - POST is set
if ($_POST && isset($_POST['digest']))
{
$digest = $_POST["digest"];
// set the session variables ...
$_SESSION['usernames'] = $_POST["firstname"]." ".$_POST["lastname"];
$_SESSION['firstname'] = $_POST["firstname"];
$_SESSION['lastname'] = $_POST["lastname"];
$_SESSION['email'] = $_POST["email"];
$_SESSION['uid'] = $_POST["uid"];
// Needed for key
$uid = $_POST["uid"];
$time = $_POST["time"];
// Read the property file with the key and URL so this won't go into the main code
// this sets $appKey and $safeurl
$mykey = "".$uid.$time.$appKey;
$mydigest = md5($mykey);
}
// session is not initialized as we never got the post above to set session vars
// call now the safe login to get the post to set the session vars ...
if (!isset($_SESSION['uid']) || empty($_SESSION['uid']))
{
// Read the property file with the key and URL so this won't go into the main code
// this sets $appKey and $safeurl
header("Location: ".$safeurl);
}
$usr = $_SESSION['uid'];
$this->setCurrentUserName($usr);
return TRUE;
}
在使用
$\u会话之前,请确保正在调用会话\u start()
,$\u会话始终是一个全局数组。如果在某些地方看不到该值,则很可能是您以前删除了它们。显然,如果session\u start未使用PHPINI设置自动运行,请确保运行它。$\u session
是一个全局变量,它始终可用(在调用session\u start()
之后)。也就是说,依赖globals是不好的,它会导致无法维护的代码。创建一个处理原始会话的类。是否在运行填充$\u会话变量的脚本部分之前调用会话开始?如果它在您的问题中所处的位置,您可能会在启动会话之前检索数据,这将不会填充$\u会话。另外,您在问题中放置的代码在哪里?在其中一个类中?会话_start()是否位于问题代码中的错误位置?现在脚本位于php页面的最顶端。。。所有的会话变量都可以回传,但它们在某些类中不起作用。有些是这样的。会话_start()是否在问题代码中的错误位置?现在脚本位于php页面的最顶端。。。所有的会话变量都可以回传,但它们在某些类中不起作用。有些是这样。标题(“位置:.$safeurl”)代码>-无论这是什么文件,您都需要运行会话\u start()
。只有父(调用方)文件需要它。所有包含的文件都可以使用$\u会话
。如果(session_id()='')session_start(),您可以安全地执行代码>在您的所有文件中…我有if(session_id()=='')session_start();在所有文件中。但是,我无法将其添加到$safeurl中,因为这是会话详细信息的SSO服务器。我所有的会话数据都能正常工作,只是不能在这个文件中的几个类中引用它。。。真让我抓狂,因为我认为这是一个20分钟的实现。会话只在您使用它们的服务器上工作。。您无法(轻松地)将会话数据从服务器1传递到服务器2。。这就是你的意思吗?事实上,等等。。这个php文件是SSO测试的回调,对吗?如果是这样,那么它可能是在发布数据,而不是使用会话。检查PHP页面中的die(var\u dump($\u POST))
以查看发生了什么。。。