phpbar.de logo

Mailinglisten-Archive

[php] HTTP-Request user-agent senden

[php] HTTP-Request user-agent senden

Dennis Sterzenbach lists at darknoise.de
Don Okt 30 09:03:27 CET 2003


Friedhelm Betz wrote:
> On Thursday 30 October 2003 00:39, Jochem Schausten (Webmaster) wrote:
> [...]
> 
> Hi,
> 
> 
>>Ich zitier mal aus deren Regeln: "Application must in the http-request
>>user-agent string provide state which program and version that is
>>connecting to our Server, for example: 'ichbins version 1.0' "
>>
>>Wie sende ich so einen HTTP-Request?
>>
> 
> 
> php.net/header und http://www.w3.org/Protocols/rfc2616/rfc2616
> header ("User-Agent: ichbins version 1.0'");
> header ("Location: http://www.example.com/");
Location ist in diesem Fall nicht richtig, da dies dazu benützt wird,
einen *Redirect* zu machen, aber hier das PHP, wenn ich richtig
verstanden habe, als Client fungieren soll.

Ferner sind Header für die serverseitige Operation von PHP.
Also kann das im Falle, dass PHP einen "Browser" spielen soll, überhaupt
nicht den gewünschten Effekt haben.
Wenn PHP einen Browser vorgaukeln und etwas von einem Server requesten
soll, dann kann man hier mit Sockets eine Verbindung zur Gegenseite
aufbauen und die Header etc. kontrollieren.

$sock = fsockopen('www.test.com', 80, $errorno, $errorstring, 30);

// Welcher "Browser" ist das Script?
fputs($sock, "User-Agent: .......\n");
// Akzeptierte Sprache und Dateiformate:
fputs($sock, "Accept: 
text/xml,application/xml,application/xhtml+xml,text/html,text/plain,image/png,image/jpeg,image/gif\n");
fputs($sock, "Accept-Language: de, en\n");
// Jetzt die Seite angeben
fputs($sock, "GET /test/index.html HTTP/1.1\n\n");

// Auf die Antwort warten
     while (!feof($sock)) {
         $response = fgets($sock, 400);
     }

fclose($sock);

In $response steckt dann die komplette Antwort des Servers,
inklusive seiner HTTP Header. Unter anderem steckt da auch
dann der Response-Code mit bei, der am besten zuerst aus-
gewertet werden sollte, da er eine wichtige Information über
einen eventuellen Fehlschlag der Operation, Art der Daten ist
etc.
Um den Wunsch der Authentifizierung zu erkennen, musst Du das
sowieso (afaik kommmt dann der Response-Code 401).

Für genaue Infos über Authentifizierung würde ich mal in den RFC
nachschauen, wie das funktioniert.

Halt mich mal auf dem Laufenden ob und wie es klappt :) -
interessiert mich selber.

Gruß
-- 
   Dennis Sterzenbach
   http://www.darknoise.de/



php::bar PHP Wiki   -   Listenarchive