Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
fopen http [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-webhosting
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
fopen http


 
radgnar
21-09-2005, 14:45 
 
hallo,

ich versuche über die fopen funktion eine andere seite auszulesen um informationen von ihr verarbeiten zu können.

script ungefähr:

if($sp = fsockopen($host, 80)) {
fputs($sp,"GET ".$path." HTTP/1.1\r\n");
fputs($sp,"Referer: www.google.de\r\n");
fputs($sp,"Accept-Language: de\r\n");
fputs($sp,"User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows
NT 5.1; SV1; .NET CLR 1.1.4322)\r\n");
fputs($sp,"Host: $host\r\n");
fputs($sp,"Connection: Keep-Alive\r\n");
fputs($sp,"Cache-Control: no-cache\r\n");
fputs($sp,"\r\n");
$res = "";

while(!feof($sp)) {
$res .= fgets($sp, 128);
}
fclose($sp);
}


Der Vorgang funktioniert auch Problemlos, jeddoch finden sich wenn ich $res ausgeben lasse auf der seite komische zeichen in tabellen, die da eigentlich nicht sein sollten.
beispielweise werden in die ausgelesene seite zeichenketten wie f83 oder ff6 eingefügt.

Woran kann das liegen?

MfG

 
Quetschi
21-09-2005, 14:47 
 
Hört sich nach chunked-transfer an. Zeig mal den Header des Responses.

 
radgnar
21-09-2005, 14:51 
 
yo hast recht is chunked. Was kann man da machen?

header:
HTTP/1.1 200 OK Date: Wed, 21 Sep 2005 12:50:03 GMT Server: Apache/1.3.33 (Debian GNU/Linux) mod_gzip/1.3.26.1a PHP/4.3.10-16 X-Powered-By: PHP/4.3.10-16 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 Transfer-Encoding: chunked Content-Type: text/html; charset=iso-8859-1

 
Quetschi
21-09-2005, 14:58 
 
Das hier sollte dir weiterhelfen:

http://www.jmarshall.com/easy/http/#http1.1c2

Grob gesagt bekommst lauter Bruchstücke geliefert. Vor jedem Stück steht die Länge des nächsten Stücks als Hexadezimal-angabe. Damit kannst Stück für Stück aus dem Response 'extrahieren'.

 
radgnar
21-09-2005, 16:31 
 
vielen dank, problem mit hilfe der genannten seite behoben

 
Quetschi
21-09-2005, 16:40 
 
Keine Ursache :)

Nächstes mal bitte noch bei PHP-code überlange Zeilen an geeigneten Stellen umbrechen, sodass bei 1024er Auflösungen kein Querscroller entsteht. ;)

 
radgnar
21-09-2005, 18:08 
 
okay sorry, fällt mir aufgrund einer höheren auflösung nicht auf, aber ich habs editiert.

mfg


Alle Zeitangaben in WEZ +2. Es ist jetzt 19:02 Uhr.