Dennis: Version-Script

Beitrag lesen

Hi Coder,

$file = include_once ("http://www.xxx.de/update/update.php");

STOP! Niemals so etwas machen!

include_once() interpretiert den eingelesenen Text als PHP-Code. Auch wenn diese Website im Moment vielleicht nur eine Zahl "1.0" zurückgibt, könnte es sein, dass diese fremde Website mal gehackt wird und dann "<?php do_something(); ?>" zurückgibt und das würde dein Script dann ausführen. Somit stellt dieser Code eine große Sicherheitslücke dar, da sich (zumindest theoretisch) beliebiger Programmcode einschleusen lässt.

Zusätzlich ist in aktuellen PHP-Versionen die Konfigurations-Option allow_url_include standardmäßig auf Off gesetzt, wodurch obiger Code nicht funktionieren wird.

In diesem Fall würde ich dir raten, die Funktion file_get_contents() zu nutzen - dies funktioniert allerdings nur, wenn allow_url_foben auf On gesetzt ist, was standardmäßig jedoch der Fall ist. Sollte dir dein Provider auch dies deaktiviert haben, so bleibt dir lediglich die Möglichkeit mit fsockopen() eine Verbindung zum Zielserver zu öffnen und die HTTP-Kommunikation selbst durchzuführen. Es gibt z.B. mit Zend_Http_Client fertige Klassen, welche dir die Arbeit wesentlich erleichtern.

Beispiele:

// Verwendung von file_get_contents()  
$latestVersion = file_get_contents('http://example.org/update.php');  
  
// Verwendung von Zend_Http_Client  
require_once('Zend/Http/Client.php');  
$client = new Zend_Http_Client('http://example.org/update.php');  
$latestVersion = $client->request();

Viele Grüße,
  ~ Dennis.