Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-检查图像是加载在img src中还是直接加载在浏览器中?_Php_Giphy - Fatal编程技术网

PHP-检查图像是加载在img src中还是直接加载在浏览器中?

PHP-检查图像是加载在img src中还是直接加载在浏览器中?,php,giphy,Php,Giphy,假设我有一个图像url:-example.com/myimg.png 我想检查它是否包含在img src中,还是有人通过浏览器直接打开了它 我需要的:- 检查这张GIPHY的图像- 若您直接在浏览器中打开它,那个么它包含图像顶部和底部的链接,但若您将此图像包含在img src中,那个么它只显示一个图像 我尝试了以下代码,但这不是一个可靠的解决方案:- $ref = isset($_SERVER['HTTP_REFERER'])? $_SERVER['HTTP_REFERER']: ""; if

假设我有一个图像url:-example.com/myimg.png

我想检查它是否包含在img src中,还是有人通过浏览器直接打开了它

我需要的:- 检查这张GIPHY的图像-

若您直接在浏览器中打开它,那个么它包含图像顶部和底部的链接,但若您将此图像包含在img src中,那个么它只显示一个图像

我尝试了以下代码,但这不是一个可靠的解决方案:-

$ref = isset($_SERVER['HTTP_REFERER'])? $_SERVER['HTTP_REFERER']: "";
if ($ref != "")
{
    header( 'Content-Type: image/jpeg' );
    readfile( 'my-image.jpg' );
}
else
{
  <img src="my-image.jpg">
  <a href="#">My Link</a>
}
$ref=isset($\u服务器['HTTP\u REFERER'])$_服务器['HTTP_REFERER']:“”;
如果($ref!=“”)
{
标题('Content Type:image/jpeg');
readfile('my image.jpg');
}
其他的
{
}
TL;giphy博士分析
Accept
HTTP标头,并使用
Age:
标头值大于
Cache Control:max Age=
值 当浏览器在
标记中加载图像时,它会发送特定的
接受
标题。例如,Firefox71.0b12将使用

Accept: image/webp,*/*
但如果您在浏览器中打开此URL,即使使用相同的
Referer
标题,浏览器也会发送另一个带有标题的请求

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
但还有更多。由于缓存原因,浏览器将不会发送另一个请求

为了避免这种情况,giphy将使用以下标题进行回复:

Last-Modified: ...
Etag: "..."
Content-Type: image/gif
Cache-Control: max-age=86400
Age: 99360
(省略其他标题,不保留顺序)

如您所见,
年龄
大于
最大年龄
,因此浏览器会立即将其视为“过时”,在直接打开图像时强制执行另一个请求


请注意,此方法可能不适用于所有浏览器。

这是因为上面的giphy链接实际上不是指向图像的链接。这是一个网页的链接。上面的真实图像链接是,你可以直接访问。另外,发布一个示例链接并不能真正回答“为什么我需要这个”。这相当于“我想要什么”@MagnusEriksson我知道I.giphy.com/media/N8Lfh9gWcWYIU/giphy.webp是真实的图像url,但我也可以在img src属性中传递,它可以毫无问题地工作-如果它不是图像,它如何工作?@MagnusEriksson你能进一步解释吗?使用
wget
时,只下载图像,不下载markup@Magnus埃里克森是不正确的。根据
Accept
request头,服务器可以使用图像或302重定向进行回复。