如何阻止php脚本直接从地址栏执行


How to block a php script from being executed directly from address bar?

我有这样的东西:

$.getJSON('/scripts/commons/theScriptDoTravelBackInTime.php',{
}, function(){
  // etc.. etc...
}
});

有没有一种方法可以简单地通过在类似地址栏http://www.myserver/scripts/commons/theScriptDoTravelBackInTime.php?

也许输出一个回声"嘿,不要作弊!"

基本,不是100%安全,但通常引用

if($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') {
 //your code
}

这就是kohana框架所使用的:

   public static function is_ajax()
    {
      return (isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND 
              strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest');
    }

如果你使用zend框架,有一种很好的方法可以检查它的

if($this->_request->isXmlHttpRequest())
{
  //The request was made with JS XmlHttpRequest
}

您可以查看HTTP Referer数据。如果它是空白的,那么它来自于键入或粘贴URL。如果它不是空白的,那么该字段将显示链接的来源。

http://en.wikipedia.org/wiki/HTTP_referer