0

我正在尝试创建使用 openid 的登录系统,我使用了以下代码

<?php
require 'openid.php';

try{
$openid = new LightOpenID('www.mydomain.com');

if(!$openid->mode){
    if(isset($_GET['login'])){
   if(isset($_POST["google"])){
    $openid->identity = 'https://www.google.com/accounts/o8/id';
   }
   elseif(isset($_POST["yahoo"])){
    $openid->identity = 'https://me.yahoo.com';
       }
   else{ //do nothing }

       $openid->required = array('namePerson/friendly', 'contact/email');
       header('Location: ' . $openid->authUrl());
    }
 ?>
 <form action="?login" method="post">
   <button id="google" name="google">Login with Google</button>
   <button id="yahoo" name="yahoo">Login with Yahoo</button>
 </form>
 <?php
}
else{   
    echo 'User ' . ($openid->validate() ? ' has ' : 'has not ') . 'logged in.'; 
}
 } catch(ErrorException $e) {
   echo $e->getMessage();
 }
 ?>

这段代码工作正常。但我的问题是,当用户使用 google 或 yahoo 进行身份验证时,他们会使用添加到 url 的参数(即使用 GET 方法)重定向回来。有什么方法可以隐藏 url 中的数据(使用 POST 方法)。

提前致谢。

4

1 回答 1

1

如果我理解正确,您不希望提供者使用 GET 发送 openid 参数。好吧,您不能强迫提供商通过 POST(或 GET 或任何其他 http 方法)向您发送某些内容。有些会这样做,有些则不会,LightOpenID 本身支持从 POST 和 GET 接收数据,但仍然无法强制提供者使用其中任何一个。

但是,您可以立即将您的用户重定向到另一个页面,这样他就不会看到该 url,如果这是您想要的。

于 2011-12-21T20:48:14.420 回答