如果是ASP,我采用如下的做法,但不知道PHP怎么做。dim result
result=InStr(1,Request.ServerVariables("HTTP_REFERER"),"myasp",1)
if result=0 or result=NULL then
        Response.Redirect "hello.asp"
end if

解决方案 »

  1.   

    你这不是禁止吧?只是判断referer里面是否包含了某个字符串,然后重定向而已。要禁止地址栏的话可以用js的window.open,通过参数来关闭地址栏。照你上面asp的做法,php下这样写:
    if(!strpos($_SERVER['HTTP_REFERER'],'myasp'))
        header('location:hello.asp');
    其实从http协议上讲,要判断是不是由浏览器发送的请求,可以判断$_SERVER['HTTP_USER_AGENT'],它会返回客户端浏览器的一些信息,如果你的程序是自己构造的http请求不设置$_SERVER['HTTP_USER_AGENT']的话,它应该是空的。否则由浏览器发送的话,它的值就会包含一些msie之类的字符。
      

  2.   

    其实这些都是"防君子不防小人"的做法。
    什么referer,HTTP_USER_AGENT的,通过socket或curl伪造http头都可以蒙混过去。
      

  3.   

    没有用的,如果别人想恶意进入,是很容易的,用socket等东西就伪写一个HTTP头标发过你那边的服务器,服务器则只认头标不认人,所以说,要想完全禁止是不可能的,防止一般的也还是可以的
      

  4.   

    任何方法都是可以伪造的。一般来说可以通过$_SERVER['HTTP_REFERER']防止大部分吧 
      

  5.   

    就像火车采集器,是可以构服务器所需要的http协议,你再怎么整也是没戏.