Я думаю, что вам лучше всего использовать модуль OpenID из Zend Framework . Он может использоваться сам по себе, без необходимости использования всей платформы, и у них есть довольно простое объяснение того, как его использовать на своих страницах справочника . Это так же просто (если вы понимаете концепцию 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.');
}
Это намного проще в использовании, чем PHP OpenID Library ( php-openid ), предоставляемая OpenID Foundation .
РЕДАКТИРОВАТЬ: Как реализовать Zend_OpenId (в ответ на комментарий).
Загрузите последнюю версию Zend Framework и распакуйте папку ZendFramework-1.9.2/library/Zend/OpenId
.
Однако есть несколько вещей, которые вы должны сделать:
- Изменение значения класса расширений в
[...]/OpenId/Exception.php
с Zend_Exception
на Exception
.
- Просмотрите каждый файл (я знаю, утомительно) и замените все обязательные и включаемые на абсолютные пути.
Теперь вы можете ссылаться на классы по:
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 быть проблемой в заднице!