检查请求的来源

时间:2011-07-18 12:39:09

标签: php

当需要图像时,网站上的

链接就像这样

<img src="getimage.php?id=<?php echo $name ?>" " width="280px" height="70px">

然后在getimage.php上获取id并从中找到正确的图片并显示它。

$id = $_GET['id'];

这完美无缺。我如何找出请求的来源。所以在下面这一行的哪一页上

<img src="getimage.php?id=<?php echo $name ?>" "width="280px" height="70px">

所以最终我可以知道所请求的图像是用于index.php还是about.php等

由于

5 个答案:

答案 0 :(得分:6)

您可以向图片网址添加其他参数,以指定请求的页面:

<img src="getimage.php?id=<?php echo urlencode($name); ?>&page=<?php echo urlencode($page); ?>" "width="280px" height="70px">

与您使用id参数的方式完全一样。

好处是,这不依赖于某些标题浏览器发送(或不发送)HTTP Referer,这是您无法从服务器端控制的。

要获取生成图像链接的页面,您可以使用以下内容:

$page = basename(__FILE__);

请参阅basename PHP Manual__FILE__ PHP Manual

此外,代码使用urlencode PHP Manual函数来确保属性不会中断。

答案 1 :(得分:6)

如果设置,请在HTTP_REFERER数组中查找密钥$_SERVER

$_SERVER['HTTP_REFERER'];
  

将用户代理引用到的页面地址(如果有)   当前页面。这是由用户代理设置的。并非所有用户代理都会   设置这个,有些提供修改HTTP_REFERER的能力   特征。简而言之,它无法真正被信任。 (source

答案 2 :(得分:4)

$_SERVER['HTTP_REFERER']; 

你在找什么?

答案 3 :(得分:2)

您可以查看$ _SERVER ['HTTP_REFERER'],但这并不总是由发送请求的浏览器设置。您还可以在发回带有页面标识符的响应时设置会话变量(即'about')。如果设置了此会话变量,则请求的上一页位于变量中。如果没有设置,则用户第一次登陆您的网站。

答案 4 :(得分:0)

您必须添加另一个定义源的参数:

<img src="getimage.php?id=<?php echo $name ?>&amp;src=about" "width="280px" height="70px">

在PHP脚本中,您现在可以使用$ _REQUEST ['src']来区分不同的来源。

请勿使用引用,因为它不可靠。