Упрощаем регистрацию с Gravatar
16 апреля 2014 PHP 11711 просмотров
Всем уже давно известен сервис Gravatar, который упрощает процесс работы с аватарами. Как для пользователей, так и для сайтов. Можно не загружать каждый раз своё фото на новый сайт, сайт может получить ваше фото из Gravatar по вашему email. Это удобно пользователю, потому что можно поменять своё изображение в одном месте и оно сменится везде. Удобно и сайтам, нет необходимости имплементировать процесс загрузки файлов. Конечно, в какой-то степени это затрагивает вопрос о безопасности, но у вас всегда есть право не использовать то или иное решение. Итак, об аватарках, думаю, знают многие. Но Gravatar также позволяет получить по email базовую информацию о пользователе.

В эту информацию могут входить контакты, телефонный номер, имя человека, персональные ссылки, изображения. Согласитесь, многое из этого списка может понадобиться вашему сайту. И вместо того, чтобы который раз заставлять пользователя вводить эти данные, можно попробовать получить эту информацию.

Ключом данного решения служит email, как и в случае с аватарами.

Итак, представим стандартную форму регистрации. Имя, фамилия, email, пароль. Представим стандартные настройки профиля: поля из регистрации, аватарка, контакты, ссылки на сайты. Если пользователь имеет открытые данные на Gravatar, то мы можем получить всё, зная email. Не стоит, конечно, совсем отказываться от этих полей, так как не все имеют профили в Gravatar, и некоторые профили публичные. Но можно сделать так, чтобы пользователь для начала вводил только email. Если данные найдены - вуаля, нет - предложить ему их ввести.

1. Пользователь

Человеку нужно создать свой профиль, если такого еще нет. Заходим в Gravatar, логинимся через WordPress и заходим в "My Profile" и заполняем всё, что не боитесь сделать общедоступным. Сделать приватным профиль тоже легко, зайдите в свой профиль и нажмите "Спрятать".

2. Сайт. Аватар

Теперь приступим к самому интересному, по крайней мере для читателей блога. Получим аватарку и информацию о профиле. Все операции делаются по md5 хэшу email. Т.е. приготовим наши параметры.
$email = 'a@plutov.by';
$hash = md5(strtolower($email)); // 04426f52dc9d570b5725b12805ba8944
Теперь ссылка на изображение пользователя будет такой. Обратите внимание, не надо ничего скачивать себе на сервер, достаточно в тег img указать следующую ссылку - http://www.gravatar.com/avatar/04426f52dc9d570b5725b12805ba8944

3. Сайт. Информация

Получение информации происходит таким же способом, но по другой ссылке. Интересно то, что данные могут быть возвращены как в JSON, так и в сериализованной PHP-строке, что очень удобно.
$email = 'a@plutov.by';
$hash = md5(strtolower($email));
$url = 'http://ru.gravatar.com/' . $hash . '.php'; // http://ru.gravatar.com/04426f52dc9d570b5725b12805ba8944.php
$data = unserialize(file_get_contents($url));
Автоматизируйте, упрощайте, стандартизируйте!