Простой косвенный подход для ссылки на изображения - PullRequest
1 голос
/ 02 июня 2011

У меня есть веб-сайт, на котором размещены изображения, на которые можно делиться ссылками. Я где-то читал, что это плохая идея. Как я могу применить простой метод косвенного обращения, возможно, сохраняя существующие ссылки на некоторое время, пока они не исчезнут с Facebook?

1 Ответ

2 голосов
/ 02 июня 2011

Старый ответ ниже.

Пример создания ссылок, на которые вы не можете указать прямую ссылку:

$expire = 60 * 5; // 5 minutes;
$time = $_SERVER['REQUEST_TIME'] + $expire;
$image_id = $image_id;
$secretpassword = "secretpassword";

function generate_link($image_id, $time, $secretpassword) {
    $hash = md5($secretpassword . $time . $image_id);
    return "image.php?" . http_build_query(array(
        'image_id' => $image_id,
        'time' => $time,
        'hash' => $hash,
    ));
}

function is_link_valid($image_id, $time, $hash, $secretpassword) {
    if ($hash !== md5($secretpassword . $time . $image_id)) {
        return false; // hash is invalid
    }
    if ($time < $_SERVER['REQUEST_TIME']) {
        return false; // link has expired
    }
}

Используйте как:

generate_link($image_id, $time, $secretpassword);
is_link_valid($_GET['image_id'], $_GET['time'], $hash, $secretpassword);

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

Срок действия этих ссылок истекает через 5 минут или независимо от того, что вы установили для $expire.

Одна из проблем заключается в том, что эти ссылки выглядят не очень красиво. Я знаю, как заставить их выглядеть красивее, но это выходит за рамки этого вопроса.


Старый ответ

Я предполагаю, что вы имеете в виду, что вы делитесь изображениями, которые находятся на других доменах (например, Facebook).

Проблема, которую вы описываете, заключается в том, что вы «просачиваетесь» из других доменов, используя их изображения (и пропускную способность). Я не знаю политику Facebook в отношении прямых ссылок, но для небольших сайтов это настоящее бремя. Добавление косвенного обращения не решит эту проблему.

Единственный способ решить эту проблему - загрузить изображения на сервер изображений, либо бесплатный, либо тот, который вы сами контролируете. Вы могли бы попросить своих пользователей сделать это, или вы можете сделать это для них. Автоматизировать это сложно, если вы не управляете сервером изображений, но наличие сервера изображений может быть очень дорогостоящим (пропускная способность дорогая). То, что пользователи делают это, ложится на них бременем и может сделать ваш сайт менее привлекательным, поскольку им нужно выполнить дополнительный шаг.

Я думаю, что у вас есть варианты.

...