如何防止直接URL访问?

时间:2011-05-04 07:14:58

标签: php regex .htaccess

请帮我解决热链接,如何阻止直接访问此网址并将访问者重定向到index.php:

http://www.example.com/index.php?link=http://www.anysite.com/dir/file&name=on&email=on&submit=on

3 个答案:

答案 0 :(得分:1)

你正在寻找这样的东西:

if(!strpos('mysite.com',$_SERVER["HTTP_REFERER"])) header('Location: index.php')

答案 1 :(得分:0)

为了回答这个问题,我假设您不关心同一个用户是否访问 它多次(假设第一次访问来自主索引页)。这也假设用户将接受cookie。

在主索引页面上:

  1. 在index.php
  2. 上启动会话
  3. 在会话中加入一些随机值。例如:md5(microtime())= af1929191 ...
  4. 还将每个url中的随机值作为另一个参数,例如:index.php?verify = af19 ...& link = http://foo.com
  5. 加载网址时:

    1. 检查“验证” param设置如果不存在, 将它们重定向回主索引 页。或者更有帮助,因为你正在创造一个奇怪的行为,显示它们 一条错误消息,指出您正在做什么,以及为什么。
    2. 启动 会话并确保该值 在他们的会话中匹配该值 在网址中。

答案 2 :(得分:0)

使用htaccess文件是解决此问题的常用方法:
来自http://altlab.com/htaccess_tutorial.html
此代码特别重定向任何尝试热链接图像的人。

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?mysite\.com/ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteRule .*\.(jpe?g|gif|bmp|png)$ http://img148.imageshack.us/img148/237/hotlinkp.gif [L]