PHP将页面请求限制在特定服务器上?

时间:2015-11-18 19:12:57

标签: php

基本上我的脚本会流式传输一个不在web根目录下的mp3文件。如果有意义的话,我的脚本会通过音频标签在另一个网站上调用。这是它的外观:

Webiste #2:

<audio src="http://website#1.com/getMp3?file=somehashedvalue"></audio>

我的想法是,我只想让网站#2获得此流,这意味着如果您直接转到http://website#1.com/getMp3?file=somehashedvalue,您将获得404。

在我的getMp3.php课程中(托管在网站#1上),这不起作用:

$whitelist = $this->getWhitelist();
$ip = $_SERVER['REMOTE_ADDR'];

if( !in_array( $ip, $whitelist ) {
    header('HTTP/1.0 404 Not Found');
    exit;
} else {
    //continue
}

查看日志时,来自Website #1的{​​{1}}上的请求实际上是客户端的IP地址。

关于如何获取Website #2的IP地址的任何想法?

1 个答案:

答案 0 :(得分:1)

您可以尝试检查引荐来源($_SERVER['HTTP_REFERER'])以获取其他网站的域名,但这可能是欺骗性的。并且一些用户可能将其浏览器设置为从不发送引用者。它还可能取决于浏览器是否甚至会在跟踪音频标签中的链接时尝试发送引荐来源。但是如果您将其打开(允许其他网站链接音频标签中的文件),那么一些未经授权的人将最终下载该文件。这是肯定的。

检查$_SERVER['REMOTE_ADDR']无效的原因是浏览器会解析<audio>标记。它不是真正要求该文件的其他网站;它是用户的浏览器。