Наш блог не о программировании PHP, но это будет весьма полезно для веб-мастеров. Поясню почему. Есть такой открытый стандарт децентрализованной системы аутентификации, который называется OpenID
Говоря человеческими словами - это такая штука, что если ты зарегистрирован в OpenID, то ты зарегистрирован на множестве сайтов, на которых есть поддержка этого стандарта. Вот сейчас я и объясню как сделать авторизацию в PHP скрипте, используя этот стандарт.
Но читатель может задаться вопросом, мол зачем мне пользоваться стандартом о котором никто не слышал и никто не пользуется? А вот и не правда! Наверняка каждый знает хоть одно из следующих названий Google, Yahoo!, AOL, LiveJournal, MySpace, IBM, Steam, Orange и VeriSign. Сайт пользующиеся этой системой помечают себя соответствующим значком.
Для того, чтобы начать пользоваться технологией, нужно сначала понять принцип ее работы.
По сути OpenID - это открытый идентификатор, заменяющий стандартные логин и пароль. Систему можно разделить на две части. Сайты позволяющие зарегистрировать идентификатор и сайты его принимающие. Последних, разумеется, больше.
Как происходит работа этого протокола?
По сути все эти сервисы используют упрощенную технологию OpenID, но вот есть и вход по стандартному OpenID. Но в чем плюс такого метода? Почему бы не сделать к примеру обычную регистрацию логин и пароль? Ну многим просто лень пройти эти простые формальности. Зато если кому и не лень, так это спам ботам. А вот эти сервисы защищают от подобной проблемы. Давайте же наконец рассмотрим различные способы авторизации! Вот способ авторизации на PHP от Яндекса
А кнопочку входа через Яндекс можно сделать и того проще:
Но внимательный читатель, понимающий в PHP может задаться, а где же мне взять файл
openid.php? Ведь скрипт использует функции из этой библиотеки. А библиотеки то и нет? А об этом дальше. Было бы преступлением оставить в стороне авторизацию google, ведь это чуть ли не самый популярный сайт, поисковик и что угодно в общем. Ну пример авторизации гугла и заодно библиотека, которая требуется для яндекс авторизации находится тут. Так вот, там все есть и работа с базой и пример и библиотека, ну просто находка для человека, который хочет сделать авторизацию на php. Ну, а для гугла вот такую кнопку попробуйте
Таким способом можно сделать odnoklassniki авторизацию, так же делается и авторизация вконтакте, да и в общем то любая авторизация на сайте.
Понятное дело, что новичок плохо разбирающийся в php мало что извлечет из вышеописанного, но возможно этот новичок захочет добавить все это в закладки и вернуться немного позже?
А какие выводы и пользу мог бы извлечь для себя человек знающий PHP? Можно сделать быструю и удобную регистрацию. Людям проще один раз нажать на кнопку, чем проходить стандартную регистрацию с логином, паролем, капчей и прочими данными, которые им по просту лень вводить.
Попробуйте организовать на своем сайте OpenID и вы просто удивитесь как возрастет его посещаемость!
Но читатель может задаться вопросом, мол зачем мне пользоваться стандартом о котором никто не слышал и никто не пользуется? А вот и не правда! Наверняка каждый знает хоть одно из следующих названий Google, Yahoo!, AOL, LiveJournal, MySpace, IBM, Steam, Orange и VeriSign. Сайт пользующиеся этой системой помечают себя соответствующим значком.
Для того, чтобы начать пользоваться технологией, нужно сначала понять принцип ее работы.
По сути OpenID - это открытый идентификатор, заменяющий стандартные логин и пароль. Систему можно разделить на две части. Сайты позволяющие зарегистрировать идентификатор и сайты его принимающие. Последних, разумеется, больше.
Как происходит работа этого протокола?
- Заходим на сайт и выбираем авторизацию через OpenID
- Сервис получает адресс, пересылает на специальный сервер и проверяет является ли пользователь тем, за кого себя выдает
- Если пользователя нет в OpenID, то ему предлагают зарегистрироваться. Если же есть и все в порядке, то пользователь авторизуется на сайте
По сути все эти сервисы используют упрощенную технологию OpenID, но вот есть и вход по стандартному OpenID. Но в чем плюс такого метода? Почему бы не сделать к примеру обычную регистрацию логин и пароль? Ну многим просто лень пройти эти простые формальности. Зато если кому и не лень, так это спам ботам. А вот эти сервисы защищают от подобной проблемы. Давайте же наконец рассмотрим различные способы авторизации! Вот способ авторизации на PHP от Яндекса
<?php
require 'openid.php';
# Обработка входа
try {
$openid = new LightOpenID('http://example.com'); # URL вашего сайта
if(!$openid->mode) {
if(isset($_POST['login_x'])) {
$openid->identity = 'http://www.yandex.ru/';
# Запрос дополнительной информации о пользователе.
# Список доступных данных см. в разделе Дополнительные данные о пользователе
# Поля, указанные в параметре required, на сайте Яндекса отображаются как обязательные
# (незаданные значения подсвечиваются красным цветом)
$openid->required = array('contact/email');
$openid->optional = array('namePerson/friendly');
header('Location: ' . $openid->authUrl());
}
# Обработка подтверждения
# Если аутентификация не удалась или отменена
} elseif($openid->mode == 'cancel') {
echo 'Ошибка входа на сайт';
} else {
# Получение данных пользователя при успешной аутентификации
if ($openid->validate()) {
$attrs = $openid->getAttributes();
$user_data = array(
'id' => $openid->identity,
'nickname' => $attrs['namePerson/friendly'],
'email' => $attrs['contact/email']
);
if (!$user_data['email']) {
echo 'Email не задан';
} else {
echo 'ID ' . $user_data['id'] . ' has logged in';
# Далее — выборка существующего или регистрация нового пользователя
}
} else {
echo 'Ошибка входа на сайт';
}
}
} catch(ErrorException $e) {
echo $e->getMessage();
}
?>
А кнопочку входа через Яндекс можно сделать и того проще:
<form action="{URL точки входа}" method="post">
<input type="image" name="login" src="{URL картинки}">
</form>
Точка входа, это судя по всему название вашего скрипта OpenID. А картинку можно такую поставить например такую Но внимательный читатель, понимающий в PHP может задаться, а где же мне взять файл
openid.php? Ведь скрипт использует функции из этой библиотеки. А библиотеки то и нет? А об этом дальше. Было бы преступлением оставить в стороне авторизацию google, ведь это чуть ли не самый популярный сайт, поисковик и что угодно в общем. Ну пример авторизации гугла и заодно библиотека, которая требуется для яндекс авторизации находится тут. Так вот, там все есть и работа с базой и пример и библиотека, ну просто находка для человека, который хочет сделать авторизацию на php. Ну, а для гугла вот такую кнопку попробуйте
Таким способом можно сделать odnoklassniki авторизацию, так же делается и авторизация вконтакте, да и в общем то любая авторизация на сайте.
Понятное дело, что новичок плохо разбирающийся в php мало что извлечет из вышеописанного, но возможно этот новичок захочет добавить все это в закладки и вернуться немного позже?
А какие выводы и пользу мог бы извлечь для себя человек знающий PHP? Можно сделать быструю и удобную регистрацию. Людям проще один раз нажать на кнопку, чем проходить стандартную регистрацию с логином, паролем, капчей и прочими данными, которые им по просту лень вводить.
Попробуйте организовать на своем сайте OpenID и вы просто удивитесь как возрастет его посещаемость!
Комментариев нет :
Отправить комментарий