我正在使用LightOpenID,虽然它很轻,但它不是很容易理解,而且它没有wiki ...
他们给出的示例文件如下(对于细长的帖子感到抱歉),我不明白为什么它会实例化两次LightOpenID?
require 'openid.php';
try {
if(!isset($_GET['openid_mode'])) { // what is this about?
if(isset($_POST['openid_identifier'])) {
$openid = new LightOpenID;
$openid->identity = $_POST['openid_identifier'];
header('Location: ' . $openid->authUrl());
}
?>
<form action="" method="post">
OpenID: <input type="text" name="openid_identifier" /> <button>Submit</button>
</form>
<?php
} elseif($_GET['openid_mode'] == 'cancel') {
echo 'User has canceled authentication!';
} else {
$openid = new LightOpenID;
echo 'User ' . ($openid->validate() ? $openid->identity . ' has ' : 'has not ') . 'logged in.';
}
} catch(ErrorException $e) {
echo $e->getMessage();
}
我正在尝试将其添加到我现有的脚本here,如果有人真的感觉有帮助的话。 我怎样才能使$ openid-&gt; validate()返回true,我可以将$ sql_answer保存到数据库中?
答案 0 :(得分:3)
在OpenID中,需要跨相关方执行多个请求才能完成登录过程;单一的互动是不够的。更具体地说:
因此,LightOpenID的两个实例实际上属于案例2和3的单独HTTP请求;在案例1中,您不需要LightOpenID对象,因为您正在显示静态表单。
答案 1 :(得分:2)
他们提供了一个维基:http://code.google.com/p/lightopenid/w/list
如何使用您的脚本创建两个OpenID对象是不可能的。如果你不喜欢你的脚本$openid = new LightOpenID;
两次,那么只需在if(isset($_POST['openid_identifier'])) {
上写一次