Работаем с Gravatar

На днях перевели все скрипты, в которых используются аватары пользователей, на использование аватар с Gravatar.com. Теперь нам не нужно беспокоиться ни о загрузке аватар на наш сервер, ни об изменении размеров больших картинок, ни о защите от загрузки файлов с фальшивыми расширениями.

Немного о самом сервисе. Gravatar.com ― это сервис, на котором Вы регистрируетесь, указав свой адрес email, затем загружаете аватар, который желаете использовать. После этого, на сайтах и в блогах, которые требуют указания email и подключены к gravatar, указываете тот email, с которым регистрировались на gravatar.com и аватар, который Вы туда загрузили, будет отображаться рядом с Вашим комментарием на этих сайтах и в блогах.

Итак, для того, чтобы получить аватар пользователя, нам нужен md5-хеш его email'а. Но, как мы знаем, у адресов, написанных в разном регистре, будет и разный хеш, посему перед хешированием подвергаем введенный адрес обработке через strtolower. Также в официальной инструкции рекомендуется перед хешированием также воспользоваться функцией trim для устранения лишних пробелов. У нас из адреса электронной почты итак все пробелы устраняются автоматически, поэтому этот этап я пропускаю. В итоге получаем вот такой код:

<?php
$gravatar = md5(strtolower('email@localhost.localdomain'));
?>

Теперь формируем адрес аватара. В той таки официальной инструкции сказано, что адрес аватара должен выглядеть так: http://www.gravatar.com/avatar/md5-хеш-email'а. После хеша также можно добавить расширение «.jpg» (я так и поступаю). Но это еще не все возможности. Также можно указать и желаемый размер аватара (по умолчанию 80x80px), подставив после хеша (или после расширения, если Вы его указываете) «?s=100». Где «100» ― размер стороны аватара в пикселях. Поскольку все аватары квадратные, то указывать нужно только одну сторону.

Кроме размера, можно также указать, что следует показывать в случае, если на сервере нет аватара для этого адреса электронной почты. Это параметр «?d=», который может принимать следующие значения: «404» если Вы желаете, чтобы в этом случае сервер ответил 404-ой ошибкой, «mm» для того, чтобы отображался силуэт человечка на сером фоне, «identicon» для генерации картинки с одноцветным узором, «monsterid» для картинки с монстриком, нарисованном в стиле MS Paint, «wavatar» для геометрической фигуры с рожицей и «retro» для генерации картинки с рожицей в восьмибитном стиле (как в старых видеоиграх). Как это все выглядит можно посмотреть ниже:

Также в параметре «?d=» можно указать полный адрес картинки, которую следует показывать в случае отсутствия загруженного аватара, обработанный при помощи функции urlencode. В таком случае сервер gravatar перенаправит запрос по адресу, указанному в этом параметре.

Кроме всего вышеперечисленного, существует параметр, с помощью которого можно фильтровать аватарки. В параметре «?rating=» Вы можете указать, допускаются ли на Вашем сайте аватарки с изображениями сексуального или оскорбительного характера (но стоит помнить, что пользователи сами оценивают аватары при загрузке, поэтому результат может быть неточным). Для аватар есть следующая система оценок:

gДопускаются лишь аватары, рассчитанные на любую аудиторию любых сайтов.
pgМожет содержать грубые жесты, провокационно одетых людей, бранные слова, или элементы насилия.
rМожет содержать такие вещи, как грубую ненормативную лексику, насилие, обнаженную натуру, или изобращения наркотиков и их применения.
xМожет содержать порнографию, явное изображение полового акта и запредельные сцены насилия.

Параметры можно комбинировать, но как показывает практика, параметр «d=» должен находится строго после «s=», поскольку в противном случае показывается то, что указано в параметре «d=» даже в случае, если аватар для этого адреса электронной почты на сервер загружен. Также заметил следующую странность: если после хеша указан параметр «?d=» со значением 30, а сразу после него параметр «d=» с полным адресом другой картинки, то сервер gravatar перенаправляет запрос даже в случае, если аватар загружен на их сервер. После изменения значения «d=» на «identicon» или что-то из списка дефолтных показывается загруженный аватар, а не дефолтный. Вот такое хитросплетение. Как не изменял порядок параметров в запросе ― все равно перенаправляет.

Кстати, если Ваш сайт открывается по https, то в случае наличия на страницах аватаров некоторые браузеры будут сообщать о том, что страница частично не зашифрована. Это можно исправить, заменив в обращении к gravatar «http» на «https» и подставив субдомен «secure» перед «gravatar.com».


11.12.2011, 15:43
  аватар, глобально распознаваемые аватары, аватарки.
Просмотров: 1227.
11
Честно говоря, даже не знаю, как там сейчас. Когда я в последний раз работал с WordPress, то был отдельный плагин для этих аватарок, в настройках которого можно было изменять все, кроме http/https.
Комментарий был отправлен 15.02.2012, 12:45. Автор: Alik.
Извините новичка за глупый вопрос, но не подскажете, где находится или может находиться этот код в Wordpress?
Комментарий был отправлен 14.02.2012, 22:16. Автор: Василий Пупкин.