[PHP] fsockopen vraagje

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

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben momenteel bezig met een fsockopen om een andere pagina te includen. Het gaat om de afmeldlijsten op http://www.smsafzeggen.nl/voetbal.php - deze staan op een andere locatie aangezien deze in ASP zijn geprogrammeerd. Aangezien ik niet heel handig ben met PHP, hoop ik hier een antwoord te vinden.

Door een wijziging op de server van de hostingpartij, kan ik niet de meer "PHP include tag" gebruiken, waardoor ik genoodzaakt ben een andere methode te gebruiken. Na veel proberen, is de fsockopen nu gelukt, alleen komt er boven de afmeldlijsten nu het volgende te staan:
HTTP/1.1 200 OK Server: Microsoft-IIS/5.0 Date: Tue, 31 Oct 2006 10:19:22 GMT P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTR STP IND DEM" X-Powered-By: ASP.NET Connection: close Content-Length: 32621 Content-Type: text/html Expires: Mon, 30 Oct 2006 17:39:22 GMT Set-Cookie: ASPSESSIONIDSADRCTSR=NNDBCMHDPBMABBCGGMPCDCKM; path=/ Cache-control: private
.
Het lijkt me dus dat ik dit zelf aanroep in de code, maar ik kan maar niet vinden waar.

De code ziet er nu als volgt uit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$fp = fsockopen("DOMAIN", 80, $errno, $errstr, 120);
if (!$fp) {
   echo "$errstr ($errno)<br />\n";
} else {
   $out = "GET /list.asp HTTP/1.1\r\n";
   $out .= "Host: DOMAIN\r\n";
   $out .= "Connection: Close\r\n\r\n";

   fwrite($fp, $out);
   while (!feof($fp)) {
        echo fgets($fp, 128);
   }
   fclose($fp);
}
?>

DOMAIN staat uiteraard het domain ingevuld.
Kan iemand mij helpen, om de tekst hier af te halen? Heel erg bedankt, dan kunnen de lijsten weer helemaal online :)

Acties:
  • 0 Henk 'm!

  • skabouter
  • Registratie: Oktober 2000
  • Laatst online: 20-08 08:55

skabouter

Skabouter

Je print de response op je request helemaal, dat is dus inclusief de response headers. Deze zul je er zelf eerst uit moeten filteren...

heb je dit script zelf geschreven of ergens van gekopieerd?

offtopic:
Interessante site overigens

[ Voor 10% gewijzigd door skabouter op 31-10-2006 11:42 ]

[ Dislect ]


Acties:
  • 0 Henk 'm!

  • Zyppora
  • Registratie: December 2005
  • Laatst online: 12-09 10:59

Zyppora

155/50 Warlock

Zijn dat niet gewoon de headers die met de pagina meegestuurd worden? Als je normaal naar de pagina browst, handelt je browser deze headers af. Als het goed is krijg je het HTML verhaal gewoon toegestuurd na de headers (zo werkte het bij mij in elk geval wel). Die kun je er uitfilteren met een tweetal explode() aanroepen (eentje voor <html> en eentje voor </html>).

PS. Zal wel een beetje omslachtig zijn met die explodes, maar het werkt wel :)

[ Voor 0% gewijzigd door Zyppora op 31-10-2006 11:43 . Reden: Ben weer niet snel genoeg zie ik }:O ]

Phenom II X4 945 \\ 8GB DDR3 \\ Crosshair IV Formula \\ R9 290


Acties:
  • 0 Henk 'm!

  • Prutser_IA
  • Registratie: Januari 2000
  • Laatst online: 03-06-2021

Prutser_IA

<*{{{><

Volgens mij is het ook mogelijk om hier fopen te gebruiken..

of zelfs 'file_get_contents( url )' deze geeft een string met de inhoud van de pagina, deze kan je direct afdrukken.. (eerst ff checken of de call goed ging natuurlijk)

42


Acties:
  • 0 Henk 'm!

  • Thralas
  • Registratie: December 2002
  • Laatst online: 20:43
Zyppora schreef op dinsdag 31 oktober 2006 @ 11:42:
Zijn dat niet gewoon de headers die met de pagina meegestuurd worden? Als je normaal naar de pagina browst, handelt je browser deze headers af. Als het goed is krijg je het HTML verhaal gewoon toegestuurd na de headers (zo werkte het bij mij in elk geval wel). Die kun je er uitfilteren met een tweetal explode() aanroepen (eentje voor <html> en eentje voor </html>).

PS. Zal wel een beetje omslachtig zijn met die explodes, maar het werkt wel :)
Inderdaad. Je kunt beter met bijvoorbeeld strpos zoeken naar \r\n\r\n.
RFC 2616:
Both types of message consist of a start-line, zero or more header fields (also known as "headers"), an empty line (i.e., a line with nothing preceding the CRLF) indicating the end of the header fields, and possibly a message-body.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Heel erg bedankt voor de hulp. Het zijn inderdaad de headers die worden getoond. Ik heb helaas niet veel kunnen vinden hoe ik strpos en explode in dit scriptje kan integreren. Kan iemand mij hier misschien wat verder mee helpen? Zoals al eerder gezegd: ik ben geen echte PHP whizz kid. Maar aangezien ik graag de lijsten weer online wil hebben (je wilt niet weten hoeveel bezoekers de website trekt- mensen hebben nog steeds vaak problemen met afmelden van smsdiensten).

Alvast heel erg bedankt :)

Acties:
  • 0 Henk 'm!

  • Zyppora
  • Registratie: December 2005
  • Laatst online: 12-09 10:59

Zyppora

155/50 Warlock

explode
strpos

Die php.net website is je hele PHP naslagwerk. Browse maar eens wat rond :)

Phenom II X4 945 \\ 8GB DDR3 \\ Crosshair IV Formula \\ R9 290


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik had er inderdaad al even naar gekeken, maar merk dat ik de technische kennis mis. Om toch de lijsten te kunnen plaatsen, hoopte ik dat iemand mijn code misschien even kan checken en aanvulling kan geven. Ik zou het erg waarderen, net als de mensen die de afmeldcodes zoeken :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Iemand die mij nog iets verder op weg wil helpen..? Alvast heel erg bedankt!

Acties:
  • 0 Henk 'm!

  • 2mb
  • Registratie: Mei 2004
  • Laatst online: 17-09 13:56

2mb

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
$fp = fsockopen("DOMAIN", 80, $errno, $errstr, 120);
if (!$fp) {
   echo "$errstr ($errno)<br />\n";
} else {
   $out = "GET /list.asp HTTP/1.1\r\n";
   $out .= "Host: DOMAIN\r\n";
   $out .= "Connection: Close\r\n\r\n";

   fwrite($fp, $out);
   while (!feof($fp)) {
        $response .= fgets($fp, 128);
   }
fclose($fp);

function get_middle($source, $beginning, $ending, $init_pos) {
   $beginning_pos = strpos($source, $beginning, $init_pos);
   $middle_pos = $beginning_pos + strlen($beginning);
   $ending_pos = strpos($source, $ending, $beginning_pos + 1);
   $middle = substr($source, $middle_pos, $ending_pos - $middle_pos);
   return $middle;
}

echo get_middle($response, "<body>", "</body>", 0);
}

Jouw script aangepast zodat je een variable $response terugkrijgt met de inhoud van de pagina, en dan een echo van de tekst tussen de tags <body> en </body>. Niet getest, maar hiermee zou je toch wel een eindje kunnen komen. :)

Mijn muziek op SoundCloud - Speel online rikken - Maak muziek in je browser


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Heel erg bedankt :)
De melding die ik nu krijg is al iets korter geworden:
.1 200 OK Server: Microsoft-IIS/5.0 Date: Thu, 02 Nov 2006 18:20:31 GMT P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTR STP IND DEM" X-Powered-By: ASP.NET Connection: close Content-Length: 32621 Content-Type: text/html Expires: Thu, 02 Nov 2006 01:40:31 GMT Set-Cookie: ASPSESSIONIDSAARCSSQ=MOGLANPAJEDEONGAAJAHBKCF; path=/ Cache-control: private
Tevens te zien op http://www.smsafzeggen.nl/voetbal.php. Doe ik nu nog iets verkeerd..?

Acties:
  • 0 Henk 'm!

  • evolnick
  • Registratie: Januari 2006
  • Laatst online: 04-06-2024
gebruik de code van 2mb, alleen dan met de 'get_middle' regel iets anders
PHP:
1
echo get_middle($response, "<BODY CLASS=body2>", "</BODY>", 0);

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
That did the trick :)
Heel erg bedankt mensen!
Pagina: 1