通过URL显示PHP图像

通过URL显示PHP图像,php,image,url,Php,Image,Url,我有以下php代码(image.php): *此页面(image.php)位于site.tld 现在。。。此代码将由调用 如果在site.tld上调用image,我想显示image1.jpg,如果没有调用,image2.jpg 该代码显示调用代码的任何域名 有什么解决办法吗?谢谢 编辑:在任何网站上,$\u SERVER['SERVER\u NAME']的输出都是site.tld(我的服务器) 这就是问题所在,因为脚本工作不正常。首先,检查$\u服务器['SERVER\u NAME']输出中的i

我有以下php代码(image.php):

*此页面(
image.php
)位于
site.tld

现在。。。此代码将由
调用

如果在
site.tld
上调用image,我想显示
image1.jpg
,如果没有调用,
image2.jpg

该代码显示调用代码的任何域名

有什么解决办法吗?谢谢


编辑:在任何网站上,
$\u SERVER['SERVER\u NAME']
的输出都是
site.tld
(我的服务器)


这就是问题所在,因为脚本工作不正常。

首先,检查
$\u服务器['SERVER\u NAME']
输出中的if条件。 然后使用
readfile()
而不是
file\u get\u contents()

,这是因为

$_SERVER['SERVER_NAME']
显示服务器的名称(即执行PHP的服务器)

您需要的是包含
的页面的URL,我不确定客户端浏览器是否会将此类信息发送到您的服务器


/编辑:如果您试图阻止第三方网站显示您的图片,您希望在服务器配置级别执行此操作,例如,

如果您使用Apache,请尝试在虚拟主机配置中禁用
useCononicalName
(可能需要重新加载/重新启动Apache)。

尝试以下操作:

    $imgPath = "image1.jpg";

    if(stripos($_SERVER["HTTP_REFERER"], 'http://site.tld/')=== false){

       $imgPath = "image2.jpg";

    }

    //echo $_SERVER["HTTP_REFERER"]."<br/>";
    //echo $imgPath."<br/>";

    header('Content-type: image/jpeg');
    echo file_get_contents($imgPath);

您可以发布“错误日志(打印($\u服务器,true))”吗?没有错误。问题是,无论调用代码的域名是什么,代码总是显示image1.jpg。请向我们显示echo$\u SERVER['SERVER\u name']结果,并检查if条件。使用函数进行尝试:
imagecreatefromjpeg
大部分时间都是这样,就像
$\u SERVER['HTTP\u REFERER']
一样,但这可能是伪造的。
$\u SERVER的输出['SERVER\u NAME']
在所有网站中都是site.tld(我的服务器)…正在寻找使用图片获取当前url的方法。
$\u SERVER['SERVER\u NAME']
的输出在其他网站中是site.tld(我的服务器)…这是问题所在,因为脚本工作不正常。从PHP文档中可以看到:“页面的地址(如果有的话)”它将用户代理引用到当前页面。这是由用户代理设置的。并非所有用户代理都会设置此项,有些用户代理提供将HTTP\U REFERER作为功能进行修改的功能。简言之,它确实不可信。“是的,类似于:)但此示例有一些错误。还有一种替代方法?不是“物理”错误。我指的是一些“错误”。例如:从site2.tld:右键单击>查看图像,图像现在显示在site1.tld上,但它保持不变。抱歉,我不太明白。如果您从服务器site2.tld或site1.tld导航,则显示的图像是image2.jpg?为确保取消对回声的注释并检查某些数据是否错误,我添加了另一个选项,请让我知道是否有错误你已经解决了@PWhite
    $imgPath = "image1.jpg";

    if(stripos($_SERVER["HTTP_REFERER"], 'http://site.tld/')=== false){

       $imgPath = "image2.jpg";

    }

    //echo $_SERVER["HTTP_REFERER"]."<br/>";
    //echo $imgPath."<br/>";

    header('Content-type: image/jpeg');
    echo file_get_contents($imgPath);
<img src='http://site.tld/image.php?myfookey=secret' />
<img src='http://site.tld/image.php' />
$imgPath = "image1.jpg";

if (!(isset($_REQUEST["myfookey"]) &&  $_REQUEST["myfookey"] == 'secret')){
    $imgPath = "image2.jpg";
} 

header('Content-type: image/jpeg');
echo file_get_contents($imgPath);