flip: kleiner bot , fsockopen

Guten Abend,

wie das Thema schon andeutet versuch ich mich grad an einem kleinem bot- Mechanismus..

auf meinem lokalem Apache2 soll eine php-Datei auf eine andere im gleichem Verzeichnis zugreifen und Daten in ein Formular schreiben.

Zunächst bin ich noch dabei diese Datei zu öffnen, was noch nicht klappt...

$op = fsockopen("****.php",80);

Warning: fsockopen() [function.fsockopen]: php_network_getaddresses: getaddrinfo failed: Der angegebene Host ist unbekannt. in C:\Apache2\htdocs\*****\**.php on line 13

Warning: fsockopen() [function.fsockopen]: unable to connect to ****.php:80 (Unknown error) in C:\Apache2\htdocs\****\**.php on line 13

bin für jeden Tipp dankbar...

mbg flip

  1. hi,

    es muss bisher an der Adresse liegen..

    www.google.de krieg ich keine Fehlermeldungen ...

    komplette Pfadangabe al la localhost/******/***.php geht auch nicht..

    wie muss ich den Pfad angeben?

    mbg flip

    1. ok,

      schon etwas mehr licht...

      Warning: fsockopen() [function.fsockopen]: unable to connect to http://localhost/*****/****.php:80 (Unable to find the socket transport "http" - did you forget to enable it when you configured PHP?) in C:\Apache2\htdocs\*****\**.php on line 13

      Wie schalt ich das an ?

      mbg flip

  2. Hi,

    $op = fsockopen("****.php",80);

    "php" ist keine existierende Top-Level-Domain.

    wie muss ich den Pfad angeben?

    Im Inhalt des Requests, abhängig vom verwendeten Protokoll. Die TCP/IP-Verbindung hat nichts damit zu tun, da nicht sie auf HTTP basiert, sondern umgekehrt.

    bin für jeden Tipp dankbar...

    Mache Dir ausreichende Gedanken, _bevor_ Du ein Posting abschickst. Dann brauchst Du Dir auch nicht zweimal selbst zu antworten.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hi,

      $op = fsockopen("****.php",80);

      "php" ist keine existierende Top-Level-Domain.

      ok, wenn ich es in eine *.de umbenenne, bekomm ich den Quellcode ausgegeben.

      Wie stell ich das an ...

      wie muss ich den Pfad angeben?

      Im Inhalt des Requests, abhängig vom verwendeten Protokoll. Die TCP/IP-Verbindung hat nichts damit zu tun, da nicht sie auf HTTP basiert, sondern umgekehrt.

      Also http basiert auf Tcp/ip , is klar und fsockopen öffnet eine Verbindung zum Internet auf Basis von Tcp oder udp ...

      Wie form ich meine Dateien um damit es klappt...?

      mbg flip

      1. Hi,

        Wie form ich meine Dateien um damit es klappt...?

        indem Du den Request wie in RFC 2616 spezifiziert aufbaust.

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
  3. Hallo,

    $op = fsockopen("****.php",80);

    wie wäre es mit

      
    $host = 'example.com';  
    $path = '/pfad/zur/datei';  
    $fp = @fsockopen($host, 80,);  
    $res='';  
    if ($fp) {  
      fputs($fp, "GET $path HTTP/1.1\r\n");  
      fputs($fp, "Host: $host\r\n");  
      fputs($fp, "Connection: close\r\n\r\n");  
      while(!feof($fp)) {  
        $res .= fgets($fp, 128);  
      }  
      fclose($fp);  
    }  
    print_r($res);
    

    mfg
    Twilo

    1. Hallo,

      $op = fsockopen("****.php",80);

      wie wäre es mit

      $host = 'example.com';
      $path = '/pfad/zur/datei';
      $fp = @fsockopen($host, 80,);
      $res='';
      if ($fp) {
        fputs($fp, "GET $path HTTP/1.1\r\n");
        fputs($fp, "Host: $host\r\n");
        fputs($fp, "Connection: close\r\n\r\n");
        while(!feof($fp)) {
          $res .= fgets($fp, 128);
        }
        fclose($fp);
      }
      print_r($res);

      
      >   
      > mfg  
      > Twilo  
        
      Das sieht nett aus, könntest du es bitte beschreiben...  
      was heissen z.B diese r und n ...  
        
      mbg flip  
      
      > 
      
      1. Hallo.

        was heissen z.B diese r und n ...

        Derart maskiert sind das Zeilenumbrüche.
        MfG, at

    2. Hallo,

      soll hier:

      fputs($fp, "GET $path HTTP/1.1\r\n");

      etwa der pfad bei mir http://localhost/.../....php

      in http 1.1 umgewandelt werden??

      beim pfad steht ja schon allvoran http://

      bitte um klärung.

      mbg flip

      1. Hallo,

        fputs($fp, "GET $path HTTP/1.1\r\n");

        etwa der pfad bei mir http://localhost/.../....php

        in http 1.1 umgewandelt werden??

        beim pfad steht ja schon allvoran http://

        du solltest mal nach HTTP Resquest google'n...

        bei dir wäre $host = 'localhost' und $path = '/.../....php'

        mfg
        Twilo

        1. Hallo,

          bei dir wäre $host = 'localhost' und $path = '/.../....php'

          Ich bekomme leider diese Fehlermeldung...

          Fatal error: Maximum execution time of 30 seconds exceeded in C:\Apache2\htdocs\iqtest\Bot.php on line 35

          line 35 ist jene wo das while kommmt.

          $host = 'localhost';
          $path = 'iqtest/fuck.php';
          $fp = fsockopen($host, 80);
          $res='';
          if ($fp) {
            fputs($fp, "GET $path HTTP/1.1\r\n");
            fputs($fp, "Host: $host\r\n");
            fputs($fp, "Connection: close\r\n\r\n");}
            while(!feof($fp)) {

          }
            fclose($fp);

          Hab mir etwas dies rfc angeschaut, da wird so wie du es gemacht hast
          host und datei getrennt, hab aber nicht jedes Wort verstanden.

          Könntest du mir noch ein Tipp geben wie ich da weiter komme.

          mbg flip

          1. Hallo,

            Fatal error: Maximum execution time of 30 seconds exceeded in C:\Apache2\htdocs\iqtest\Bot.php on line 35

            while(!feof($fp)) {

            }

            Ist ja auch logisch.

            In der while-Scleife hast du das

            $res .= fgets($fp, 128);

            vergessen. Ist ja klar, dass das sonst ne Endlosschleife wird.

            Jonathan

            1. yo,

              danke is wohl irgendwie untergegangen beim kopieren...

              jetzt bekomm ich aber einen bad request.

              Wozu dient das  @ for fsockopen()?

              $res .= fgets($fp, 128); // 128 Zeichen der ersten Zeile vom Zeiger aus nicht? Ich möchte aber gern alle Zeichen der Seite einlesen.

              Anschließend noch durchsucen, dacht ich mir mit preg_match.

              mbg flip

              1. Hallo,

                Wozu dient das  @ for fsockopen()?

                solche Fragen beantwortet dir das PHP Manual
                Fehler-Kontroll-Operatoren

                $res .= fgets($fp, 128); // 128 Zeichen der ersten Zeile vom Zeiger aus nicht? Ich möchte aber gern alle Zeichen der Seite einlesen.

                wenn dir 128 zu wenig ist, pass es doch nach deinen Vorlieben an ;-)
                fgets

                mfg
                Twilo

              2. Hallo flip,

                $res .= fgets($fp, 128); // 128 Zeichen der ersten Zeile vom Zeiger aus nicht? Ich möchte aber gern alle Zeichen der Seite einlesen.

                Machst du doch. Du liest halt eben nur in 128 byte-Stücken ein, aber dank der While-Scheife kommt alles an.

                Jonathan