Hallo Ihr,
die Abfrage if($_SERVER["SERVER_ADDR"] == $_SERVER["REMOTE_ADDR"]) respektive if($calling_ip == $server_ip) führt zu Erfolg, wenn das Skript auf einem externen Webspace liegt und via Cron ausgeführt wird und es führt zu keinem Erfolg, wenn das Skript auf dem Cronjobausführenden Server liegt.
Und das ganze selbst dann, wenn ich $_SERVER["REMOTE_ADDR"] mit "localhost" oder "127.0.0.1" ersetze.
Lasse ich jedoch die Abfrage über Übereinstimmung der IP weg und wird dann das Skript manuell oder per Cron aufgerufen, läuft es einwandfrei .
Was mache ich falsch?
die Abfrage if($_SERVER["SERVER_ADDR"] == $_SERVER["REMOTE_ADDR"]) respektive if($calling_ip == $server_ip) führt zu Erfolg, wenn das Skript auf einem externen Webspace liegt und via Cron ausgeführt wird und es führt zu keinem Erfolg, wenn das Skript auf dem Cronjobausführenden Server liegt.
Und das ganze selbst dann, wenn ich $_SERVER["REMOTE_ADDR"] mit "localhost" oder "127.0.0.1" ersetze.
Lasse ich jedoch die Abfrage über Übereinstimmung der IP weg und wird dann das Skript manuell oder per Cron aufgerufen, läuft es einwandfrei .
Was mache ich falsch?
PHP-Code:
$server_ip = $_SERVER["SERVER_ADDR"];
$calling_ip = $_SERVER["REMOTE_ADDR"];
$user = @$_GET["user"];
$pass = @$_GET["pass"];
$sql1 = "SELECT * FROM `db_settings` WHERE `token` = 'import' AND `name` = 'user' AND `value` = '$user'";
$result1 = @mysql_query($sql1);
$number1 = @mysql_numrows($result1);
$sql2 = "SELECT * FROM `db_settings` WHERE `token` = 'import' AND `name` = 'pass' AND `value` = '$pass'";
$result2 = @mysql_query($sql2);
$number2 = @mysql_numrows($result2);
if(($calling_ip == $server_ip) && ($number1 == 1) && ($number2 == 1))
{
// do something
}
else
{
// access denied...
}
Kommentar