Bukan jawaban langsung untuk pertanyaan Anda tetapi menurut saya solusi yang lebih baik:
Jika Anda tidak ingin siapa pun kecuali cron menjalankan skrip, letakkan saja di luar web-root. Dengan begitu, tidak ada akses sama sekali melalui server web.
Jika Anda juga perlu menjalankan perintah sebagai pengguna khusus, jangan gunakan GET
tetapi minta login pengguna dan periksa sesi login (variabel sesi set tertentu...) dan sertakan skrip di halaman itu saja.
Skrip Anda yang dapat diakses publik akan terlihat seperti:
session_start();
if (isset($_SESSION['user']))
{
include '/path/to/script/outside/of/web-root';
}
else
{
die('No access.');
}
$_GET[]
&$_POST[]
array asosiatif hanya diinisialisasi ketika skrip Anda dipanggil melalui server web. Saat dipanggil melalui baris perintah, parameter diteruskan dalam $argv
array, seperti C.
Berisi larik semua argumen yang diteruskan ke skrip saat dijalankan dari baris perintah.
Perintah Anda adalah:
* 3 * * * /path_to_script/cronjob.php username=test password=test code=1234
Anda kemudian akan menggunakan parse_str() untuk menyetel dan mengakses parameter:
<?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