PHP在cron作业中检测人机浏览器

时间:2011-11-14 17:20:29

标签: php user-agent

我想阻止用户手动运行我的cron作业。除了使用不可预知的文件名之外,我想要进行某种代码检查。

显然使用任何客户端头文件是浪费时间所以我认为最简单的方法是检测$_SERVER['SERVER_NAME']的存在,据我所知,这不是在CLI中设置的。

有更好的方法吗?

4 个答案:

答案 0 :(得分:4)

看看php_sapi_name。它返回Web服务器和PHP之间的接口类型。

示例:

<?php

if(php_sapi_name() == 'cli') {
  // CLI
}
else {
  // HTTP
}

有关更多信息和其他示例,请查看http://www.electrictoolbox.com/determine-php-run-via-http-or-cli/

答案 1 :(得分:3)

你的.htaccess

中的

Options -Indexes

order allow deny
deny from all
allow from YOUR SERVER IP ADDRESS ONLY

答案 2 :(得分:2)

检查IP地址,如果是本地或服务器ip,则运行它,否则返回。

$ip = getenv('REMOTE_ADDR');

答案 3 :(得分:2)

我的cron作业位于使用htpasswd密码保护的文件夹中。您可以设置一个简单的密码,并确保没有人会浪费时间尝试访问它。我不使用任何基于IP的技术,因为这是我不想要的服务器依赖。