我认为您最好的选择是使用Zend Framework中的OpenID模块。它可以单独使用,而不必使用整个框架,并且它们对如何使用它有一个相当简单的解释on their manual pages。这很简单(如果您理解OpenID的概念):
login_page.php:
// Load the library Zend Framework way, or load it yourself...
// Always good to pick apart the library anyway, to see how it works:
Zend_Loader::loadClass('Zend_OpenId');
$consumer = new Zend_OpenId_Consumer();
if(!$consumer->login($_POST['openid_identifier'], 'redirect_to.php'))
{
die('OpenID login failed.');
}
redirect_to.php:
Zend_Loader::loadClass('Zend_OpenId');
$consumer = new Zend_OpenId_Consumer();
if($consumer->verify($_GET, $id))
{
echo htmlspecialchars($id).' is a valid ID.';
}
else
{
// redirect to "login.php?login=failed".
if(!headers_sent())
{
header('HTTP/1.1 307 Temporary Redirect', true, 307);
header('Location: login.php?login=failed');
}
else die('Invalid ID.');
}
编辑: 如何实施Zend_OpenId(以回应评论)。
下载latest Zend Framework,然后解压缩文件夹ZendFramework-1.9.2/library/Zend/OpenId。
但是你需要做一些事情:
将[...]/OpenId/Exception.php中的类扩展值从Zend_Exception更改为Exception。
浏览每个文件(我知道这很繁琐)并将所有需求和include包括在绝对路径名中。
醇>
现在您可以通过以下方式引用这些类:
require_once '/path/to/OpenId/Consumer.php';
$consumer = new Zend_OpenId_Consumer();
// If you plan on making your own OpenID's, use 'Provider' instead of 'Comsumer'.
require_once '/path/to/OpenId/Provider.php';
$provider = new Zend_OpenId_Provider();
现在,我能给你的最好的建议是阅读手册!不要指望它第一次工作...... Zend的实现可能更容易,但这并不能阻止OpenID成为痛苦的屁股!