如何制作无法通过Web浏览器调用的PHP脚本?

时间:2010-10-31 23:14:42

标签: php cron

  

可能重复:
  PHP - how to best determine if the current invocation is from CLI or web server?

我知道显而易见的答案是将脚本放在Web根目录之外,但我在我的项目中犹豫不决,因为这会使安装变得复杂,甚至可能在某些共享托管环境中无法实现。

我知道一些框架(CodeIgniter专门)有一个框架特定的方法来确保通过Web浏览器导航到它无法调用脚本,但我想通过股票PHP来实现这一点。具体来说,我的脚本旨在由cron调用。如果在Web浏览器中调用我的脚本错误,但如果在cron调用时正确执行,我怎么能这样做?

4 个答案:

答案 0 :(得分:2)

怎么样:

if (!array_key_exists("TERM", $_SERVER)) {
    exit;
}

答案 1 :(得分:1)

有很多方法,我通常会这样做:

if (!isset($argv)) die('Not allowed');

否则,可以检查$ _SERVER中的很多变量(HTTP_HOST,USER_AGENT等),但$ argv方法绝对适用于我。

答案 2 :(得分:0)

您可以将脚本放在一个目录中,其中包含一个名为.htaccess的文件(点很重要!),其中包含以下内容:

order deny,allow
deny from all

答案 3 :(得分:0)

检查超级全局$_SERVER是否有服务器密钥(例如,'SERVER_NAME','SERVER_SOFTWARE','REQUEST_METHOD')。如果他们在那里,die。如果没有,请继续。