Я заметил в исходном коде Facebook , что изображения – это ссылки на файл PHP , safe_image.php
(или rsrc.php
; время от времени меняется), причем имя выбранного файла добавляется до конца, такое в виде:
https://external-lax3-2.xx.fbcdn.net/safe_image.php?imagename1234
Или иногда это обычные файлы JPEG со случайным токеном, добавленным до конца:
https://scontent-lax3-2.xx.fbcdn.net/v/t1.0-9/17353408_410522555967800_2778489440067836960_n.jpg?oh=3e00f84c6767364c9304b34f8751114d&oe=5954DA1E
- Charset с Facebook SDK
- FB загружает фотографию из приложения и публикует ее на стене пользователя
- Время истечения времени доступа для доступа к facebook
- как читать facebook signed_request, чтобы получить user_id
- Публиковать поток из приложения - для не зарегистрированных пользователей, используя Graph API, php SDK
Что, мне интересно, как они получают пользовательский просмотрщик изображений на своем веб-сайте. Обычно это просто белый фон, с выбранным изображением в верхнем левом углу. Тем не менее, они устанавливаются посередине с серым фоном.
Не только это, связанное изображение прямо возвращается к просмотренному файлу PHP ; как это возможно, и как они это делают?
Приветствия.
EDIT : Я также заметил, что если вы измените img
src
на недопустимую ссылку, он выведет на страницу ошибку:
Изображение « Вставить ссылку на изображение здесь » невозможно отобразить, так как оно содержит ошибки.
Файлы Jpeg, ни для кого не удивляют, не принимают аргументов. Тем не менее, PHP делает. Так что, скорее всего, Facebook сделал это правило rewrite
чтобы «сопоставить» их .jpg?=
URL-адрес файла PHP, который может обрабатывать аргументы. Затем этот файл PHP извлекает данные изображения из таблицы MYSQL (например). Если вам интересно, да, вы можете иметь отображение расширения файла .jpg
в URL, загружать данные с PHP и правильно отображать изображение в браузере.
Это может быть достигнуто с помощью PHP
и .htaccess
.
Во-первых, давайте /img.jpg?=
наш .htaccess
внутри любой папки, в которой хотим иметь наш /img.jpg?=
внутри:
Options +FollowSymLinks RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^img.jpg(.*)$ imageBackground.php$1 [NC]
Yay, теперь мы сопоставляем наш img.jpg?image=bill
to imageBackground.php?image=bill
.
И тогда мы собираемся написать наш imageBackground.php
. Я написал очень простой, но в основном все, что вы делаете, это настройка заголовков (для которых используется формат изображения), а также отображение данных изображения. Очевидно, что в практическом применении это будет сложнее, например, возможно, вы динамически захватываете данные изображения из базы данных (например, Facebook ).
<?php if ($_GET['image'] == "bill") { header("Content-type: image/pjpeg"); echo file_get_contents("bill.jpg"); } ?>