Není to přímá odpověď na vaši otázku, ale myslím, že lepší řešení:
Pokud chcete, aby skript spouštěl nikdo kromě cronu, umístěte jej mimo webový kořenový adresář. Tímto způsobem neexistuje vůbec žádný přístup přes webový server.
Pokud potřebujete spustit příkaz také jako speciální uživatel, nepoužívejte GET
ale mějte přihlašovací jméno uživatele a zkontrolujte, zda nemáte přihlášenou relaci (určitá nastavená proměnná relace...) a zahrňte skript pouze na tuto stránku.
Váš veřejně přístupný skript by vypadal nějak takto:
session_start();
if (isset($_SESSION['user']))
{
include '/path/to/script/outside/of/web-root';
}
else
{
die('No access.');
}
$_GET[]
&$_POST[]
asociativní pole se inicializují pouze tehdy, když je váš skript vyvolán přes webový server. Při vyvolání přes příkazový řádek jsou parametry předány v $argv
pole, stejně jako C.
Obsahuje pole všech argumentů předávaných skriptu při spuštění z příkazového řádku.
Váš příkaz by byl:
* 3 * * * /path_to_script/cronjob.php username=test password=test code=1234
Pak byste použili parse_str() k nastavení a přístupu k parametrům:
<?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