Openid get Provider

时间:2011-01-01 16:34:51

标签: php openid

我在我的php项目中使用lightopenid作为登录系统,在用户取消身份验证并返回我的网站后,我想知道他从哪个网站取消了身份验证。

为此,我尝试了php HTTP_REFERER,但它无法让我获得真正的网站网址。 假设用户来自雅虎认证页面,我想知道它是雅虎网址。

我怎样才能做到这一点? 基本上我想知道如何在PHP中获取上一页的URL,如果可行的话。

2 个答案:

答案 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提供程序的好提示。