Umgang mit http_get

Hallo Leute,

wie der eine oder andere vielleicht gemerkt hat, bin ich derzeit sehr aktiv mit den Möglichkeiten des „http_get“ am experimentieren.:wink:

Mit folgendem Link kann ich auf die Systemübersichtsseite meines Freenas-Servers zugreifen (z.B. im IE 8):
http://Benutzername:Passwort@192.168.178.32/index.php

Wenn ich jedoch dieses benutze:

$Antwort = http_get("http://Benutzername:Passwort@192.168.178.32/index.php");

dann bekomme ich als Ergebnis dieses:

HTTP/1.1 302 Found
Status: 302 Moved Temporarily
X-Powered-By: PHP/5.2.13
Set-Cookie: PHPSESSID=4d17f9455cf95f9643d860766cfab521; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Location: login.php
Content-type: text/html
Transfer-Encoding: chunked
Date: Wed, 10 Nov 2010 20:21:54 GMT
Server: lighttpd/1.4.26

0

Warum sehr ich nicht - inhaltlich - die gleichen Daten wie im IE?:confused:

Joachim

Hi,
ich kenne mich mit FreeNAS nicht aus könnte mir aber vorstellen das evtl. gewisse Daten via Javascript geladen werden und deshalb bei einem einfachen http_get nicht zur Verfügung stehen.
Gruß Imho

Bist Du Dir sicher, dass http_get Benutzername:Passwort@… interpretiert, und Du die Funktion nicht mit httpauth (siehe PHP: Request Options - Manual) aufrufen musst?

Hallo Imho und Horst,

vielen Dank erst einmal für Eure Antworten.
Ich habe es jetzt noch mal so probiert:

$Antwort = http_get("http://192.168.178.32/index.php", array(httpauth => "Benutzer:Passwort"));
echo $Antwort;

Die Antwort:

Notice: Use of undefined constant httpauth - assumed ‚httpauth‘ in [Server\Testobjekte\FreeNAS\FreeNAS-Daten] on line 5
HTTP/1.1 302 Found
Status: 302 Moved Temporarily
X-Powered-By: PHP/5.2.13
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Location: login.php
Content-type: text/html
Transfer-Encoding: chunked
Date: Thu, 11 Nov 2010 19:35:51 GMT
Server: lighttpd/1.4.26

0

Habe ich irgendetwas verkehrt gemacht? Ist schon ein komische Sache…

An andere Stelle habe ich ein Skript zum Herunterfahren des Fileservers (Ausschnitt):

$Datei = fopen ("http://Benutzer:Passwort@192.168.178.32/exec_raw.php?cmd=shutdown%20-p%20now", "r");

Das funktioniert wiederrum…

Joachim

$Antwort = http_get("http://192.168.178.32/index.php", array('httpauth' => "Benutzer:Passwort")); 
echo $Antwort;  

Hallo Rainer,

vielen Dank für die Antwort und die Korrektur, leider bleibe ich aber auch so auf der login.php „hängen“::frowning:

HTTP/1.1 302 Found
Status: 302 Moved Temporarily
X-Powered-By: PHP/5.2.13
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Location: login.php
Content-type: text/html
Transfer-Encoding: chunked
Date: Thu, 11 Nov 2010 20:30:10 GMT
Server: lighttpd/1.4.26

0

Joachim

Dann wird den Login wohl die login.php erledigen, so wie es auch Code 302 andeutet. Also musst Du an die Deine Anfrage senden. Da ich mal vermute, dass Du auch irgendwo ein Login-Formular hat, könntest Du Dir mal die Snoopy-Klasse (Snoopy | Download Snoopy software for free at SourceForge.net) ansehen, die wir für solche Szenarien oft benutzen. Die befindet sich z.B. beim Auslesen unserer lokalen Abfallabholtermine (http://www.ip-symcon.de/forum/f53/zvo-gelber-sack-blaue-tonne-auslesen-6468/) im Einsatz.

Hallo Horst,

vielen Dank für Deinen Tipp. Ich habe mir snoopy heruntergeladen und die Klasse in den entsprechenden Ordner kopiert.
Ich habe nun anhand der Beispiele Im Internet, in der readme-Datei sowie paresys Skript versucht auf den FreeNas-Server zuzugreifen - leider bisher ohne Erfolg. Ich weiß auch nicht, ob ich auf dem richtgen Weg bin. Hier mal mein aktueller - aber auch nicht funktionierender - Code:

include "Snoopy.class.php";
$snoopy = new Snoopy;

$submit_url = "http://192.168.178.32/login.php";
$submit_vars["username"] = "Benutzername";
$submit_vars["password"] = "Passwort";
$submit_vars["submit"] = "Anmelden";
$snoopy->submit($submit_url,$submit_vars);
print ($snoopy->results);

Worauf muss ich bei der Benennung der zu füllenden Felder (oder an anderer Stelle) achten?

Joachim

Hol Dir Firebug oder ähnliches und schau Dir dort an, was beim Login übertragen wird.

Hallo Horst,

abermals Dank für Deine Antwort. Ich habe mir jetzt auch Firebug heruntergeladen und installiert. Aber eigentlich weiß ich gar nicht so genau worauf ich konkret achten soll…:frowning:

Joachim