将 $_GET 参数传递到 cron 作业
我是cron工作的新手,不确定这是否可行。
出于安全目的,我想制作一个单页脚本来查找某些GET值(用户名,密码和安全代码),以确保只有计算机和知道所有3的人才能运行该命令。
我制作了脚本,它可以在浏览器中运行它,但是是否可以使用GET值运行cron作业?
一个例子是我跑步
* 3 * * * /path_to_script/cronjob.php?username=test&password=test&code=1234
这可能吗?
我是cron工作的新手,不确定这是否可行。
出于安全目的,我想制作一个单页脚本来查找某些GET值(用户名,密码和安全代码),以确保只有计算机和知道所有3的人才能运行该命令。
我制作了脚本,它可以在浏览器中运行它,但是是否可以使用GET值运行cron作业?
一个例子是我跑步
* 3 * * * /path_to_script/cronjob.php?username=test&password=test&code=1234
这可能吗?
& 关联数组仅在通过 Web 服务器调用脚本时初始化。当通过命令行调用时,参数在$argv
数组中传递,就像C一样。$_GET[]
$_POST[]
包含从命令行运行时传递给脚本的所有参数的数组。
您的命令将是:
* 3 * * * /path_to_script/cronjob.php username=test password=test code=1234
然后,您可以使用 parse_str() 来设置和访问参数:
<?php
var_dump($argv);
/*
array(4) {
[0]=>
string(27) "/path_to_script/cronjob.php"
[1]=>
string(13) "username=test"
[2]=>
string(13) "password=test"
[3]=>
string(9) "code=1234"
}
*/
parse_str($argv[3], $params);
echo $params['code']; // 1234
这不是对你问题的直接回答,但我认为是一个更好的解决方案:
如果您不希望除 cron 之外的任何人运行该脚本,只需将其放在 Web 根目录之外即可。这样,根本无法通过Web服务器进行访问。
如果您确实需要以特殊用户身份运行该命令,请不要使用,但要让用户登录并检查登录会话(某个设置的会话变量...),并仅在该页面中包含脚本。GET
可公开访问的脚本将如下所示:
session_start();
if (isset($_SESSION['user']))
{
include '/path/to/script/outside/of/web-root';
}
else
{
die('No access.');
}