Я использую истекающие URL-адреса, чтобы скрыть URL-адреса изображений, которые я использую на своих сайтах, чтобы их можно было связывать горячими ссылками только на время жизни хеша (1 час).
Я проверяю хеш, отправленный с URL-адресом файла, по хешу на сервере, если они совпадают, скрипт вызывает следующий код:
if (isset($_GET["hash"])) {
$this_min = date('Y-m-d-g',time()) . "salt" . $vid_id;
$current_hash = substr(md5($this_min),0,12);
$submitted_hash = mysql_real_escape_string($_GET["hash"]);
if ("$current_hash" == "$submitted_hash") {
$file_url2 = "directory/" . $vid_file;
header('Content-Type: application/octet-stream');
header("Content-Transfer-Encoding: Binary");
header("Content-disposition: inline; filename=\"".md5($vid_file)."\"");
readfile($file_url2);
exit;
} else {
$_SESSION["message"] = "Download link expired, refresh the page and try again";
$_SESSION["message_type"] = 0;
header("Location:" . $_SERVER['HTTP_REFERER']);
exit;
}
}
Я использую это в теге (например, <img src="index.php?id=123&hash=ew6rg5reg4">
, и он отлично работает. Если изображение имеет горячую ссылку, оно перестает работать при изменении хэша каждый час (или минуту, если необходимо). К сожалению, этот же метод не работает, когда я использую его для загрузки файлов .flv во флэш-плеер, такой как проигрыватель JW. Файл .flv не загружен.
Каким образом я могу это исправить или добиться того же с помощью альтернативного метода?