我在我的php项目中使用lightopenid作为登录系统,在用户取消身份验证并返回我的网站后,我想知道他从哪个网站取消了身份验证。
为此,我尝试了php HTTP_REFERER,但它无法让我获得真正的网站网址。 假设用户来自雅虎认证页面,我想知道它是雅虎网址。
我怎样才能做到这一点? 基本上我想知道如何在PHP中获取上一页的URL,如果可行的话。
答案 0 :(得分:2)
如果真的需要,你可以这样做:
if(isset($_POST['openid_identifier'])) {
$openid->identity = $_POST['openid_identifier'];
$openid->returnUrl .= '?identifier=' . urlencode($openid->identity);
header('Location: ' . $openid->authUrl());
}
然后,当用户取消时:
if($openid->mode == 'cancel') {
$openid->identity = $_GET['identifier'];
echo 'User has canceled authentication! '
. 'The authentication url was ' . $openid->authUrl();
}
这个想法是强制提供者通过返回URL发送声明的标识符。然后,您可以在此标识符上调用$ openid-> authUrl()并获取您已将用户重定向到的网址。
但是,我不知道你为什么要这样做。也许如果您描述为什么需要这个,那么会有更好的解决方案吗?答案 1 :(得分:0)
你不能,如果可以的话就没有意义。
您重定向到用户OpenID提供程序。这意味着,您已经知道用户的OpenID提供商。之后发生的任何事情都是超出OpenID规范的范围,直到用户的浏览器请求您希望答复身份验证请求的URL进入。如果此请求进入,则共享密钥并且用户的会话都是使用OpenID提供程序的好提示。