Google Bot可以执行PHP脚本

时间:2009-09-01 23:57:10

标签: php cron googlebot

我有一个CRON job PHP脚本,我刚刚设置了。但是,我注意到PHP文件已执行(没有激活cron作业)。它似乎发生在Google Bot抓取该文件时,因为我注意到以下引擎访问了我的页面:

http://www.google.com/bot.html

我的问题是:

1)是否有可能通过抓取我的网页,它可以执行脚本?

2)如何从Google“隐藏”CRON文件?

3)将此文件放在我的public_html目录以外的其他地方是否明智?

非常感谢!

4 个答案:

答案 0 :(得分:2)

1)当然是

2)请参阅robots.txt(http://www.searchtools.com/robots/robots-txt.html

3)是的。但如果由于某种原因你依赖于通过http守护进程调用它,你可以使用一点技巧。

例如。第一行代码:

if(!isset($_GET['execute'])
 exit;

在你的crontab中:

http://server.tld/file.php?execute=1

答案 1 :(得分:1)

1)如果文件放在公共网站目录中,那么可以由Googlebot(或任何其他访问者)执行

2)您可以在robots.txt中为其添加Disallow子句。如果你这样做,任何普通用户仍然可以通过访问来执行它。

3)是的。

答案 2 :(得分:0)

你也可以使用php-cli。定义它是否是cron job:

define('_DOING_CRON_', true);

然后在php文件中:

if(_DOING_CRON_ && php_sapi_name() != 'cli'){
    die("You cannot get here: this is only cron task.");
}

答案 3 :(得分:0)

Runifus上面的回答为我解决了这个问题,但是Cron作业命令行不适用于?在url中传递查询字符串,如我在此处学到的:Cron Jobs calling a PHP script with variables

它应该是这样的:

http://server.tld/file.php execute=1

php条件也缺少右括号

if(!isset($_GET['execute']))  exit;