任何人都可以将openid的简单逐步集成发布到已经具有登录系统的站点中吗?
我决定使用PHP OpenID 2.1.3,但可以从何处开始和做什么.
解决方法:
我认为您最好的选择是使用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.');
}
它比OpenID Foundation提供的PHP OpenID库(php-openid)易于使用.
编辑:如何实现Zend_OpenId(响应评论).
下载latest Zend Framework,然后解压缩文件夹ZendFramework-1.9.2 / library / Zend / OpenId.
但是,您需要做一些事情:
>将[/]/OpenId/Exception.php中的类扩展值从Zend_Exception更改为Exception.
>浏览每个文件(很麻烦,我知道),然后将所有require和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陷入困境!