На днях перевели все скрипты, в которых используются аватары пользователей, на использование аватар с Gravatar.com. Теперь нам не нужно беспокоиться ни о загрузке аватар на наш сервер, ни об изменении размеров больших картинок, ни о защите от загрузки файлов с фальшивыми расширениями.
Немного о самом сервисе. Gravatar.com ― это сервис, на котором Вы регистрируетесь, указав свой адрес email, затем загружаете аватар, который желаете использовать. После этого, на сайтах и в блогах, которые требуют указания email и подключены к gravatar, указываете тот email, с которым регистрировались на gravatar.com и аватар, который Вы туда загрузили, будет отображаться рядом с Вашим комментарием на этих сайтах и в блогах.
Итак, для того, чтобы получить аватар пользователя, нам нужен md5-хеш его email'а. Но, как мы знаем, у адресов, написанных в разном регистре, будет и разный хеш, посему перед хешированием подвергаем введенный адрес обработке через strtolower. Также в официальной инструкции рекомендуется перед хешированием также воспользоваться функцией trim для устранения лишних пробелов. У нас из адреса электронной почты итак все пробелы устраняются автоматически, поэтому этот этап я пропускаю. В итоге получаем вот такой код:
<?php
$gravatar = md5(strtolower('[email protected]'));
?>
Теперь формируем адрес аватара. В той таки официальной инструкции сказано, что адрес аватара должен выглядеть так: 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».