POST simulieren

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • POST simulieren

    Hi Leute,

    ich habe ein kleines Problem. Ich möchte gerne Daten über Post transportieren ohne ein Formular zu benutzen.

    Ich habe eine Folge von Fragen, und sollte bei diesen Fragen rauskommen, das es zu einer bestimmten Frage keine Antwort gibt, soll gleich zur nächsten Seite weitergeleitet werden.

    Also müsste ich jetzt mit dem simulierten POST einmal die Seite wechseln (header("Location: ") ) und dann dort die Daten mit geben.

    Ich habe mir schon das Schnippsel von http://www.php-faq.de/q/q-code-post.html angesehen, aber gebracht hat es mir nichts außer dass das script nach den maximalen 60 sekunden abbricht.

    PHP-Code:
    191 function PostToHost($file$data) {
    192    $host "http://".$_SERVER['HTTP_HOST'];
    193    $referer $_SERVER["HTTP_REFERER"];
    194    $fp fsockopen($host80);
    195    fputs($fp"POST $file HTTP/1.1\r\n");
    196    fputs($fp"Host: $host\r\n");
    197    fputs($fp"Referer: $referer\r\n");
    198    fputs($fp"Content-type: application/x-www-form-urlencoded\r\n");
    199    fputs($fp"Content-length: "strlen($data) ."\r\n");
    200    fputs($fp"Connection: close\r\n\r\n");
    201    fputs($fp$data);
    202    while(!feof($fp)) {
    203        $res .= fgets($fp128);
    204    }
    205
    206    fclose
    ($fp);
    207    header("Location: ".$file);
    208 }

    $data "data=nichts&id=3&thisPage=seite1&nextPage=seite2;
             PostToHost("
    f-seite2,$data); 
    Code:
    Fatal error: Maximum execution time of 60 seconds exceeded in D:\Webserver\PHP\aktenkonfigurator\functions.php on line 203
    Gruß
    Uzu

    private Homepage

  • #2
    Für sowas kann man doch ganz toll cURL nutzen.

    mfg

    Kommentar


    • #3
      Na da kommt wohl einfach keine Antwort auf die du wartest. Hast du dir eigentlich mal angeguckt was du da machst?

      Kommentar


      • #4
        Original geschrieben von lennart
        Na da kommt wohl einfach keine Antwort auf die du wartest. Hast du dir eigentlich mal angeguckt was du da machst?
        hmm???

        im moment bastel ich mir was in curl zurecht
        Gruß
        Uzu

        private Homepage

        Kommentar


        • #5
          Original geschrieben von UzumakiNaruto
          hmm???
          PHP-Code:
          202    while(!feof($fp)) {
          203        $res .= fgets($fp128);
          204    
          Was macht das Ihrer Meinung nach, Herr Microsoft Certified?

          Kommentar


          • #6
            Original geschrieben von lennart
            PHP-Code:
            202    while(!feof($fp)) {
            203        $res .= fgets($fp128);
            204    
            Was macht das Ihrer Meinung nach, Herr Microsoft Certified?
            öffnet die datei und ließt sie ein!.
            ich bezog mich ja auf den link
            Gruß
            Uzu

            private Homepage

            Kommentar


            • #7
              Was macht das Ihrer Meinung nach, Herr Microsoft Certified?
              Sollte doch eigentlich die Serverantwort auslesen, solange feof bei $fp noch nicht erreicht wurde
              Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

              [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
              Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

              Kommentar


              • #8
                Original geschrieben von jahlives
                Sollte doch eigentlich die Serverantwort auslesen, solange feof bei $fp noch nicht erreicht wurde
                Und genau die wird warscheinlich einfach nicht kommen.

                Kommentar


                • #9
                  Und genau die wird warscheinlich einfach nicht kommen.
                  Tja dann wäre wohl debugging angesagt.
                  @Uzu
                  fsockopen() kennt noch error Parameter und bevor du den Request abschickst solltest du schon prüfen ob fsockopen() eine gültige Ressource zurückgeliefert hat. Hast du statt dem Domainnamen mal versucht auf die lokale IP (127.0.0.1) zu verbinden.
                  Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                  [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                  Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                  Kommentar


                  • #10
                    fehler nummer 1: fsockopen("http........)
                    fehler nummer 2: Errorhp_network_getaddresses: getaddrinfo failed: Der angegebene Host ist unbekannt.

                    tja ... da habe ich jetzt localhost, 127.0.0.1, ws15 und den FQDN probiert .. immer die gleiche meldung.

                    welchen DNS server fragt der den? den ein nslookup findet den eintrag.
                    Gruß
                    Uzu

                    private Homepage

                    Kommentar


                    • #11
                      Also wenn der für 127.0.0.1 einen nslookup machen muss, dann verstehe ich die Welt ned mehr... Weil die IP Adresse ja eigentlich das Resultat eines nslookups auf den Domainnamen sein sollte
                      Ein
                      PHP-Code:
                      $fp fsockopen('127.0.0.1',80,$errno,$errstr); 
                      klappt ned?
                      Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                      [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                      Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                      Kommentar


                      • #12
                        Original geschrieben von jahlives
                        Also wenn der für 127.0.0.1 einen nslookup machen muss, dann verstehe ich die Welt ned mehr... Weil die IP Adresse ja eigentlich das Resultat eines nslookups auf den Domainnamen sein sollte
                        Du weisst doch, dass unser Herr Microsoft Certified Professional eine andere Ausbildung hat

                        *SCNR*

                        Kommentar


                        • #13
                          asp .. deine spitzen bemerkungen kannst du dir an den hut stecken
                          was für ein kleinkind verhalten.

                          zurück zum thema.

                          PHP-Code:
                          function PostToHost($file$data) {
                          193    $host "www.ralf-basche.home";
                          194    $dir substr($_SERVER['SCRIPT_NAME'],0,strrpos($_SERVER['SCRIPT_NAME'], "/")+1);
                          195    $referer $_SERVER["HTTP_REFERER"];
                          196    echo "<br>host: ".$host."<br>file: ".$file."<br>ref: ".$referer."<br>data: ".$data;
                          197
                          198    
                          #$ch = curl_init();
                          199    #curl_setopt($ch, CURLOPT_URL,$host.$file );
                          200    #curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
                          201    #curl_setopt($ch, CURLOPT_POST, 1 );
                          202    #curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
                          203    #curl_setopt($ch, CURLOPT_HEADER, 0);
                          204    #$response=curl_exec($ch);
                          205
                          206    
                          #echo $response;
                          207    #curl_close($ch);
                          208
                          209
                          210    $fp 
                          fsockopen($host80,$errno$errstr3);
                          211    echo "Error-Nr.: ".$errno."<br>Error:".$errstr;
                          212    fputs($fp"POST $dir.$file HTTP/1.1\r\n");
                          213    fputs($fp"Host: $host\r\n");
                          214    fputs($fp"Referer: $referer\r\n");
                          215    fputs($fp"Content-type: application/x-www-form-urlencoded\r\n");
                          216    fputs($fp"Content-length: "strlen($data) ."\r\n");
                          217    fputs($fp"Connection: close\r\n\r\n");
                          218    fputs($fp$data);
                          219    while(!feof($fp)) {
                          220        $res .= fgets($fp128);
                          221    }
                          222
                          223    fclose
                          ($fp);
                          224    header("Location: ".$file);
                          225 
                          auf meinem debian system passiert genau das gleiche

                          Code:
                          host: [url]www.ralf-basche.home[/url]
                          file: f-aufhaengung
                          ref: [url]http://localhost:81/aktenkonfigurator/f-system[/url]
                          data: data=nichts&id=&thisPage=rueckenbreite&nextPage=aufhaengungError-Nr.: 0
                          Error:
                          PHP-Code:
                          $fp fsockopen('127.0.0.1',80,$errno,$errstr);
                          echo 
                          "Error-Nr.: ".$errno."<br>Error:".$errstr;
                          fclose($fp); 
                          in einer jungfräulichen php datei ergibt auch einen fehler.

                          Code:
                          Error-Nr.: 0
                          Error:
                          Gruß
                          Uzu

                          private Homepage

                          Kommentar


                          • #14
                            nslookup bezog sich auf den FQDN .. da er ja einen findet aber php probleme damit hat.

                            das oben genannte problem (Error: php_network_getaddresses kam daher, das als host "127.0.0.1/ordner" drinne stand .. kein wunder das er da nichts finden konnte.
                            Gruß
                            Uzu

                            private Homepage

                            Kommentar


                            • #15
                              Abgesehen davon ist wahrscheinlich «$file» nicht korrekt, das müsste doch ein gültiger und vom Webserver interpretierbarer Name sein.
                              (In deinem ersten Code gäbe das eh einen Syntax-Fehler)
                              Errno 0 ist natürlich korrekt, d.h. kein Fehler!
                              EDIT:

                              Seit wann ist «home» eine gültige TLD ?

                              Zuletzt geändert von H2O; 19.08.2008, 16:52.
                              Gruss
                              H2O

                              Kommentar

                              Lädt...
                              X