我通过一个 php 文件(我们称之为serveMedia.php)向我的 index.php 提供图片和视频。我使用 mod_rewrite、php-sessions 和 URL 中包含的令牌从 index.php 调用这些媒体文件,例如src="media=SOMEFILENAME&type=jpeg&token=2134573946284615492345"
媒体文件本身位于一个文件夹中,由 .htaccess ( deny from all
)限制访问
现在我的问题是:有没有可能使这个 URL 只能通过我的 index.php 访问?我试图实现的是,用户只有在通过我的页面传递内容时才能看到内容,而不是在他们访问它的 URL 时。
也许有一些我不知道的高级 .htaccess 或 php-options?我在托管空间,所以这两个可能是我唯一的选择。
这就是我目前正在使用的:
索引.php
ob_start();
session_start();
if (!isset($_SESSION['token']) || $_COOKIE['PHPSESSID'] !== session_id()){
$token = md5(uniqid(rand(), true));
$_SESSION['token'] = $token;
}
else {
$token = $_SESSION['token'];
};
服务媒体.php:
if(isset($_GET['token'])
&& $_GET['token'] == $_SESSION['token']
&& $_COOKIE['PHPSESSID'] == session_id()){
//streamthisfile!
else {
header($_SERVER['SERVER_PROTOCOL'].' 404 Not Found', true, 404);
echo "no file";
session_regenerate_id(true);
session_destroy();
unset($_SESSION);
}
感谢你的帮助!