问题描述
我有一个主栏的程序,上面有很多按钮,可以打开各种程序来注册学生信息(结果、日程安排、图书馆书籍……)。 其中一个小节是“注册新学生”,它有一个按钮来“读取 eID”,我使用的是 openid。不幸的是,它给“标头”带来了问题:“无法修改标头信息 - 标头已由...发送” 我知道这是回声在主栏中显示按钮的问题。我已经用脚本替换了大多数标题,但这不适用于 openid。 我正在寻找替代品: header('Location: ' . $openid->authUrl());仍然打开网站以从 eID 读取信息。
include "lightopenid/openid.PHP";
$openid = new LightOpenID('www.something.be');
if (!$openid->mode) {
$openid->identity = 'https://www.e-contract.be/eid-idp/endpoints/openid/ident';
$openid->required = array('namePerson/first','namePerson/last','namePerson','person/gender','contact/postalCode/home','contact/postalAddress/home','contact/city/home','eid/nationality','eid/pob','birthDate','eid/card-number','eid/card-validity/begin','eid/card-validity/end','eid/photo');
$openid->lang = 'nl';
header('Location: ' . $openid->authUrl());
在大多数情况下,我用这样的脚本替换了标题
echo("<script>location.href=$openid->authUrl();</script>");
但这对openid不起作用,它不启动连接,openid的属性保持为空。
我尝试使用
$openid->authUrl();
虽然调用了这个函数,但是也没有打开与网站的连接,所以openid的属性为空。
$returned_ob=$openid->getSregAttributes();
protected function getSregAttributes(){
$attributes = array();
$sreg_to_ax = array_flip(self::$ax_to_sreg);
foreach (explode(',',$this->data['openid_signed']) as $key) {
$keyMatch = 'sreg.';
if (substr($key,strlen($keyMatch)) != $keyMatch) {
continue;
}
$key = substr($key,strlen($keyMatch));
if (!isset($sreg_to_ax[$key])) {
# The field name isn't part of the SREG spec,so we ignore it.
continue;
}
$attributes[$sreg_to_ax[$key]] = $this->data['openid_sreg_' . $key];
}
return $attributes;
}
注意:未定义索引:openid_signed in...
returned_ob= 数组(0){ }
关于如何替换标头以启动连接并填写属性的任何想法?`
编辑:经过 looong 搜索后,我发现我可以用这个替换标题
$URL="http://yourwebsite.com/";
echo "<script type='text/javascript'>document.location.href='{$URL}';</script>";
echo '<Meta HTTP-EQUIV="refresh" content="0;URL=' . $URL . '">';
或者就我而言
echo "<script type='text/javascript'>location.href='{$openid->authUrl()}';</script>";
echo '<Meta HTTP-EQUIV="refresh" content="0;URL=' . $openid->authUrl() . '">';
谢谢舒巴姆·库马尔。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)