[PHP] Fread probleem

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • FireFoz
  • Registratie: Juni 2001
  • Laatst online: 18-06 08:40
Ik heb de volgende code:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
            $fp = @fsockopen("$host", 80, $errno, $errstr, 30);
            if($fp)
            {
                //BUILD REQUEST ARGUMENTS
                $out = "GET $file HTTP/1.1\r\n";
                $out .= "Host: $host:80\r\n";
                $out .= "User-Agent: Mozilla\r\n";
                $out .= "Accept: text/xml,text/html,text/plain\r\n";
                $out .= "Accept: application/x-www-form-urlencoded\r\n";
                $out .= "Accept-Charset: ISO-8859-1,utf-8";
                $out .= "Cache-Control: max-age=0\r\n";
                $out .= "Connection: Close\n\n";
                
                //CLEAN VARS
                $page="";

                fputs($fp,"$out");
                while(!feof($fp))
                {
                    $page.= fread($fp,1);
                }
                fclose($fp);
            }
        }


Dit werkt prima, maar fread() gooit er dus allemaal extra informatie bij. Zo zet ie hier en daar letters neer en cijfers. Die cijfers (bijv 1000) is volgensmij een waarschuwing dat die regel "0 bytes" is, maar die letters snap ik niet.

Met letters bedoel ik bijv dat ie na de lege regel tussen de headers en waar de html begint, iets neerzet. Ik krijg dan zoiets:

code:
1
2
cf4
<HTML>


Maar die cf4 zie ik dus niet als ik de pagina gewoon bekijk als ik er met internet explorer heen ga, en ook niet als ik de pagina via telnet opvraag. Het ligt dus echt aan fread

Hoe dan ook, ik wil daar van af en ik wil puur de html INCLUSIEF headers hebben, gewoon zoals ie is en niet met al die extra informatie er bij. Weet iemand hoe ik dit doe, want ik kan nergens vinden hoe ik die "warnings" (zoals ik ze dan maar even interpeteer) weg kan krijgen...

Volgensmij moet ik dus iig de grootte van de file weten, maar dat kan niet aangezien het om een remote file gaat.

[ Voor 29% gewijzigd door FireFoz op 23-02-2005 14:56 ]

Leef lekker in het nu, er is niks anders


Acties:
  • 0 Henk 'm!

  • Mysteryman
  • Registratie: Februari 2001
  • Laatst online: 11:44

Mysteryman

kan jij wat ik kan...

ik heb je code gecopieerd en bij mij gebeurd er helemaal niets...

misschien kan je uitleggen hoe je o.a. $host, $errno, $errstr, $file vult.

Everybody happy??? I soon change that here we go...


Acties:
  • 0 Henk 'm!

  • rb338
  • Registratie: Januari 2001
  • Laatst online: 05-01 12:58
Mysteryman: lijkt me duidelijk, $host is gewoon de host waar hij de pagina vandaan wil trekken, $errno en $errstr zijn de variabelen waar errors in terecht komen. $file zie ik nergens voorkomen.

De code lijkt mij ook prima in orde, heb zelf ook eens zoiets gemaakt maar dit probleem nooit gezien.

edit: overigens is de code van de TS blijkbaar recht van php.net gekomen, dus gek dat 't dan niet goed zou zijn! Zie http://ie.php.net/fsockopen

[ Voor 20% gewijzigd door rb338 op 23-02-2005 15:25 ]


Acties:
  • 0 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Dit komt door het HTTP-protocol. Zoek maar eens iets op over chunked in de RFC :)

Dit dus: http://www.w3.org/Protoco...fc2616-sec3.html#sec3.6.1

[ Voor 32% gewijzigd door Osiris op 23-02-2005 15:25 ]


Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 22:43
Lijkt mij ook chunked data encoding. Zie RFC 2616, paragraaf 3.6.1.

Acties:
  • 0 Henk 'm!

  • FireFoz
  • Registratie: Juni 2001
  • Laatst online: 18-06 08:40
Er is volgensmij geen functie in php om dit weg te krijgen of wel?
met HTTP 1.0 krijg ik dat niet, maar of ik dat nou wil? (http 1.0)


-edit- o wacht ik ben ff aan het stoeien met hexdec() nu :)

[ Voor 20% gewijzigd door FireFoz op 23-02-2005 16:06 ]

Leef lekker in het nu, er is niks anders


Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 22:43
Waarom niet? HTTP/1.0 is simpeler, je krijgt gegarandeerd gaan chunked data terug (en ook een heleboel lastige headers niet) en de server moet 't toch ondersteunen.

Acties:
  • 0 Henk 'm!

  • FireFoz
  • Registratie: Juni 2001
  • Laatst online: 18-06 08:40
Soultaker schreef op woensdag 23 februari 2005 @ 16:30:
Waarom niet? HTTP/1.0 is simpeler, je krijgt gegarandeerd gaan chunked data terug (en ook een heleboel lastige headers niet) en de server moet 't toch ondersteunen.
Hmm ja ik dacht misschien dat 1.0 achterhaald is e.d., ik gebruik altijd liever het nieuwste ;)
Maar dit is toch wel een stuk makkelijker zo, gebruik wel 1.0 dan :)
Bedankt!

Leef lekker in het nu, er is niks anders

Pagina: 1