[php] fsockopen op localhost wil niet werken

Pagina: 1
Acties:
  • 147 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • bgever
  • Registratie: April 2002
  • Laatst online: 28-05-2021
Ik heb met de volgende code connectie proberen te maken:
PHP:
1
2
3
4
5
6
7
$fs  = fsockopen("http://localhost", 80, $errno, $errstr, 20);
if (!$fs) {
    echo "$errstr ($errno)<br>\n";
} else {
  //php crap
  fclose($fs);
}
Maar helaas krijg ik elke keer een mooie (0) terug. In de manual staat dat dan de connect() functie niet kon initializen, maar ik heb geen flauw idee hoe ik dit kan oplossen.

Server:
Windows XP Home
Apache 1.3.26
PHP 4.2.3
Firewall: uit

[ Voor 5% gewijzigd door bgever op 13-03-2003 00:08 ]


Acties:
  • 0 Henk 'm!

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 17-09 07:55

thomaske

» » » » » »

Probeer het eens zonder http://

[edit]
vraag me trouwens af in hoeverre je in de manual hebt gekeken.. :?

[ Voor 70% gewijzigd door thomaske op 13-03-2003 00:12 ]

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


Acties:
  • 0 Henk 'm!

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

PHP:
1
2
3
4
5
6
7
8
9
<?
$fs  = fsockopen("localhost", 80, $errno, $errstr, 20);
if (!$fs) {
    echo "$errstr ($errno)<br>\n";
} else {
  //php crap
  fclose($fs);
}
?>


TS; ben je trots op je post history? Vergelijk deze eens met een aantal andere willekeurige gebruikers en je ziet wellicht dat er iets meer denkwerk en inzet van je wordt verwacht :)

[ Voor 49% gewijzigd door Spider.007 op 13-03-2003 00:30 ]

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


Acties:
  • 0 Henk 'm!

  • Postman
  • Registratie: Februari 2000
  • Laatst online: 12-09 01:23
Voorbeeld in manual gebruikt ook geen http:// idd. Alleen voor SSL of UDP moet je die erbij zetten, http en ftp niet.

Acties:
  • 0 Henk 'm!

  • bgever
  • Registratie: April 2002
  • Laatst online: 28-05-2021
Grmbl, heb ik weer, uit de 10.000 voorbeelden heb ik er een met een http:// er in. Ok, problem fixed dus.

Maar het probleem bleek ook ergens anders te zitten, aangezien ik geen pagina te zien kreeg, zat ik dus op de verkeerde plek te zoeken. Ik heb het nat. ook met alleen "localhost" grprobeerd, maar er zat ergens anders nog een foutje waardoor ik d8 dat het aan fsockopen lag. Iig, na wat verder zoeken en prutsen ben ik er uit.
Thnx.

Acties:
  • 0 Henk 'm!

Verwijderd

Spider.007 schreef op 13 March 2003 @ 00:11:
TS; ben je trots op je post history? Vergelijk deze eens met een aantal andere willekeurige gebruikers en je ziet wellicht dat er iets meer denkwerk en inzet van je wordt verwacht :)
Sinds wanneer word je beoordeeld op je posthistory :?

Acties:
  • 0 Henk 'm!

  • bgever
  • Registratie: April 2002
  • Laatst online: 28-05-2021
Verwijderd schreef op 13 March 2003 @ 00:38:
Sinds wanneer word je beoordeeld op je posthistory :?
Daar wil ik ook nog ff aan toevoegen dat ik hier op 56k zit te pruttelen, en dan snap je me misschien beter, dan ben je blij dat je om 0:30 snachts snel een pagina op je scherm hebt, en dat dat voorbeeld dan niet werkt, tjah, kan ik ook niets aan doen ;)

Maar nu dit topic toch open is:
Ik heb nu deze code om in te loggen op een pagina:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$user = "oikoyama";
$pass = "demo";

$request  = "GET http://localhost/isecure/safe/index.html HTTP/1.0\r\n";
$request .= "Host: localhost:80\r\n";
//$request .= "User-Agent: PHP/".phpversion()."\r\n";
$request .= "Authorization: Basic ".base64_encode($user.":".$pass)."\r\n";
$request .= "\r\n";

$fs  = fsockopen("localhost", 80, $errno, $errstr, 20);
if (!$fs) {
    echo "$errstr ($errno)<br>\n";
} else {
  fputs($fs, $request);
  //echo $request;
  while (!feof($fs)) {
    $buffer = fgets($fs, 4096);
    echo $buffer;
  }
  fclose ($fs);
}

En als ik dan dus die pagina binnen haal gaat alles goed, alleen zie ik de http headers boven in beeld. Ik snap dat ik daar nog een paar regeltjes aan toegevoegt heb in het begin, dom ben ik niet, maar nu is mijn vraag, hoe ik ervoor kan zorgen dat deze niet op het beeld komen. Is die http header altijd even groot, of is daar een gemakkelijke oplossing voor?

[edit]
Ik heb al een oplossing bed8. Er zit één witregel na de http headers, maar om die te vinden, moet je eerst de \r\n verwijderen. Als je die dus vind begint de content.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
$user = "oikoyama";
$pass = "demo";

$request  = "GET http://localhost/isecure/safe/index.html HTTP/1.0\r\n";
$request .= "Host: localhost:80\r\n";
$request .= "User-Agent: PHP/".phpversion()."\r\n";
$request .= "Authorization: Basic ".base64_encode($user.":".$pass)."\r\n";
$request .= "\r\n";

$fs  = fsockopen("localhost", 80, $errno, $errstr, 20);
if (!$fs) {
    echo "$errstr ($errno)<br>\n";
} else {
  fputs($fs, $request);
  //echo $request;
  while (!feof($fs)) {
    $buffer = fgets($fs, 1024); //4096
    if($content == false){
      $strLine = ereg_replace("[\r\n]", "", $buffer);
      if(strlen($strLine) == 0){
        $content = true;
      }
   }else{
     echo $buffer;
   }
}
  fclose ($fs);
}
Als iemand een nettere oplossing weet, laat het me weten :)
[edit2]
Zoals je ziet had ik het al gevonden :P

[ Voor 46% gewijzigd door bgever op 13-03-2003 01:30 ]


Acties:
  • 0 Henk 'm!

  • sjokki
  • Registratie: Juli 2002
  • Niet online
oikoyama schreef op 13 March 2003 @ 00:52:
En als ik dan dus die pagina binnen haal gaat alles goed, alleen zie ik de http headers boven in beeld. Ik snap dat ik daar nog een paar regeltjes aan toegevoegt heb in het begin, dom ben ik niet, maar nu is mijn vraag, hoe ik ervoor kan zorgen dat deze niet op het beeld komen. Is die http header altijd even groot, of is daar een gemakkelijke oplossing voor?
De headers en de body van een http-bericht worden gescheiden door een witregel. Wat je kan doen is bij het lezen alles weggooien totdat er een regel met een alleen een enter (\r\n of soms \n) komt. Daarna begint de body.
Pagina: 1