+ Antworten
Ergebnis 1 bis 11 von 11

Thema: Formular-Daten per POST weitergeben

  1. #1
    TP-Member KruegerFT macht alles soweit korrekt
    Registriert seit
    Sep 2004
    Beiträge
    42

    Question Formular-Daten per POST weitergeben

    Ich habe folgendes Problem:

    Eine Seite versendet Formular-Daten an ein php-script, das ich nicht verändern kann. Das Script ist von einem Drittanbieter.

    Jetzt möchte ich, dass bevor die Daten an das Script des Drittanbieters geschickt werden, eine Mail mit den Formulardaten an mich geschickt wird.

    Ich habe mir vorgestellt, man könnte als „action“ des Formulars ein eigenes Script einbinden, das zuerst eine Mail an mich schickt und dann die Formulareingaben an das Script des Drittanbierters weitergibt. Das müsste per POST passieren.

    Jetzt meine Frage: Wie ich die Formularangaben an mich schicke, ist mir klar. Aber kennt ihr eine elegante(!) Methode, wie man die kompletten POST-Daten eines Formulars an ein anderes Script weitergibt? So als ob sie direkt an dieses Script gepostet wurden...

    Vielen Dank für eure Hilfe!

  2. #2
    TP-Specialist Master_T2 bringt sich richtig ein Master_T2 bringt sich richtig ein Avatar von Master_T2
    Registriert seit
    Oct 2002
    Ort
    Übach-Palenberg
    Beiträge
    2.272
    So z.B.:

    PHP-Code:
    function sendPostToHost($strHost$strPath$strReferer$strContentData) {
        
    $fp fsockopen($strHost80);
        
    printf("Open!\n");
        
    fputs($fp"POST $strPath HTTP/1.1\n");
        
    fputs($fp"Host: $strHost\n");
        
    fputs($fp"Referer: $strReferer\n");
        
    fputs($fp"Content-type: application/x-www-form-urlencoded\n");
        
    fputs($fp"Content-length: "strlen($strContentData) ."\n");
        
    fputs($fp"Connection: close\n\n");
        
    fputs($fp"$strContentData\n");
        
    printf("Sent!\n");
        
    fclose($fp);
        return 
    true;

    Hier mal ein Beispiel für die Verwendung, aber nicht für schlecht programmierte Gästebücher missbrauchen ;-)

    PHP-Code:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
     <title>PHP - POST-Bot</title>
     
     <style type="text/css">
      .fontnormal { font-family: arial; color: #000000; font-weight: normal; text-decoration: none; font-size: 14px; }
      A { font-family: arial; color: #000000; font-weight: normal; text-decoration: none; font-size: 14px; }
      A:hover { font-family: arial; color: #000000; font-weight: normal; text-decoration: underline; font-size: 14px; }  
      TD { border: 1px solid #000000; padding: 5px; background-color: #EEEEEE; }
     </style>
     
    </head>
    <body class="fontnormal">
    <b>PHP - POST-Bot:</b><br><br>
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
     <span style="width: 120px;">Ziel-URL: </span><input type="text" name="targetDomain" value="" style="width: 300px;"> Bsp.: www.meinedomain.de<br />
     <span style="width: 120px;">Ziel-Pfad: </span><input type="text" name="targetPath" value="/" style="width: 300px;"> Bsp.: /guestbook.php?do=show<br />
     <span style="width: 120px;">Referer: </span><input type="text" name="referer" value="" style="width: 300px;"> Bsp.: www.meinabsender.de<br />
     <span style="width: 120px;">Wiederholungen: </span><input type="text" name="countCalls" value="" style="width: 300px;"> Bsp.: 1000<br />
     <span style="width: 120px; vertical-align: top; padding-top: 5px;">Daten: </span><textarea name="dataString" rows="5" cols="0" style="width: 300px;"></textarea> Bsp.: send=true&name=meinName<br />
     <span style="width: 120px;">&nbsp;</span><input type="submit" value="Starten" name="submit">
     <input type="hidden" value="Suchen" name="submit">
    </form>
    <?php
    function sendPostToHost($strHost$strPath$strReferer$strContentData) {
     
    $fp fsockopen($strHost80);
     
    printf("Open!\n");
     
    fputs($fp"POST $strPath HTTP/1.1\n");
     
    fputs($fp"Host: $strHost\n");
     
    fputs($fp"Referer: $strReferer\n");
     
    fputs($fp"Content-type: application/x-www-form-urlencoded\n");
     
    fputs($fp"Content-length: "strlen($strContentData) ."\n");
     
    fputs($fp"Connection: close\n\n");
     
    fputs($fp"$strContentData\n");
     
    printf("Sent!\n");
     
    fclose($fp);
     return 
    true;
    }
    if (isset(
    $_POST['submit'])) {
     for (
    $i 0$i <= $_POST['countCalls']; $i++) {
      
    sendPostToHost$_POST['targetDomain'], $_POST['targetPath'], $_POST['referer'], $_POST['dataString']);
     }
    }
    ?>
    </body>
    </html>
    Geändert von Master_T2 (12.11.2008 um 15:04 Uhr)
    Grüße aus Übach-Palenberg
    Tim

    http://www.template-shopping.de

  3. #3
    TP-Member KruegerFT macht alles soweit korrekt
    Registriert seit
    Sep 2004
    Beiträge
    42

    Smile

    Ah, dankeschön! Das sieht viel versprechend aus.

    Aber ich bin etwas überfordert damit, was ich der Funktion übergeben soll...

    Was gehört in die einzelnen Parameter? Insbesondere in welchem Format übergebe ich $strContentData?

    Könntest du vielleicht mal einen Beispiel-Aufruf der Funktion aufschreiben?

    Danke für deine Hilfe!

  4. #4
    TP-Specialist Master_T2 bringt sich richtig ein Master_T2 bringt sich richtig ein Avatar von Master_T2
    Registriert seit
    Oct 2002
    Ort
    Übach-Palenberg
    Beiträge
    2.272
    Beispielaufruf steht im zweiten Quelltext hinter den Formularfeldern. Für $strContentData = "send=true&name=meinName", also die Parameterliste.
    Grüße aus Übach-Palenberg
    Tim

    http://www.template-shopping.de

  5. #5
    TP-Member KruegerFT macht alles soweit korrekt
    Registriert seit
    Sep 2004
    Beiträge
    42
    Super, ich danke dir! Damit komme ich weiter!

    Mal nebenbei: hast du den zweiten Quelltext in deiner ersten
    Antwort nachträglich ergänzt oder war der schon die ganze Zeit da?
    In diesem Fall tut's mir natürlich Leid, wenn ich das übersehen habe...

    Schöne Grüße aus Berlin!

  6. #6
    TP-Specialist Master_T2 bringt sich richtig ein Master_T2 bringt sich richtig ein Avatar von Master_T2
    Registriert seit
    Oct 2002
    Ort
    Übach-Palenberg
    Beiträge
    2.272
    Ja, den hab ich ein paar Minuten später hinzugefügt. Macht aber nix ;-)
    Grüße aus Übach-Palenberg
    Tim

    http://www.template-shopping.de

  7. #7
    TP-Member KruegerFT macht alles soweit korrekt
    Registriert seit
    Sep 2004
    Beiträge
    42

    Unhappy

    Nach ein paar Tests befürchte ich, dass das doch nicht so ganz das ist, was ich brauche...

    Denn: Ich möchte erreichen, dass ein (unveränderliches) Script so ausgeführt wird, als würde ich ganz normal das zugehörige Formular abschicken. Vorher soll allerdings eine Info-Mail mit den Formular-Daten an mich geschickt werden.

    Ich kann jetzt ein Script schreiben, das eine Mail an mich schickt. Dann die POST-Daten (mit der Methode von oben) an das unveränderliche Script weitergibt. Aber die Ausgabe dieses unveränderlichen Scripts, an das ich die Daten weitergebe, erscheint in diesem Fall nicht.

    Wenn dieses Script z.B. sagt „Danke für Ihre Daten“ dann erscheint das nicht auf dem Bildschirm. Wenn dieses Script eine Header-Weiterleitung machen möchte, dann geht das auch nicht.

    Versteht ihr mein Problem? Ich will die gleiche Funktionalität, als würde ich das unveränderliche Script direkt als "action" eintragen. Nur eben vorher noch eine Mail verschicken...

  8. #8
    TP-Insider Settler ist ein richtiges Arbeitstier - DANKE Settler ist ein richtiges Arbeitstier - DANKE Settler ist ein richtiges Arbeitstier - DANKE Settler ist ein richtiges Arbeitstier - DANKE Avatar von Settler
    Registriert seit
    Feb 2008
    Ort
    Marl
    Beiträge
    805
    mal ein ganz unkomplizierter Ansatz:

    Kannst du nicht dein script als action aufrufen und dann einfach das original script per include einbinden? dann sollten doch alle Server Variablen vorhanden sein, die auch sonst benötigt werden.

  9. #9
    TP-Moderator Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Adromir lebt für das TP und seine User Avatar von Adromir
    Registriert seit
    Jun 2004
    Ort
    Hannover
    Beiträge
    4.806
    Mal ne frage, da ich gerade nen ähnliches Problem habe. Kann es sein, daß die Methode, je nach Sicherheitseinstellung des Empfangenden Servers nicht funktioniert?

    Ich hab das in nem Script versucht zu verwenden (die POST Daten werden an ein Script auf nem anderen Server verschickt, das diese in eine DB schreibt). Es kommt zwar die Bestätigung, daß die Daten gesendet wurden, sie werden vom Script aber nicht eingetragen..
    Je größer der Deppenfaktor, desto gigantischer das Bescheidwissergefühl
    -Dieter Nuhr

  10. #10
    TP-Member KruegerFT macht alles soweit korrekt
    Registriert seit
    Sep 2004
    Beiträge
    42

    Unhappy

    Super! Eine hervorragende Idee! Bin ich gar nicht drauf gekommen... Und ich würd’s echt gerne so machen. Nur leider habe ich gerade gesehen, dass in der PHP.ini (auf die natürlich keinen Zugriff habe) allow_url_include = off steht. D.h. ich kann kein externes script einbinden… mit ini_set() habe ich’s auch schon versucht - leider ohne Erfolg...

  11. #11
    DSB
    DSB ist offline
    TP-Veteran DSB ist ein richtiges Arbeitstier - DANKE DSB ist ein richtiges Arbeitstier - DANKE DSB ist ein richtiges Arbeitstier - DANKE DSB ist ein richtiges Arbeitstier - DANKE Avatar von DSB
    Registriert seit
    Mar 2005
    Ort
    Weyhe
    Beiträge
    1.137
    Zitat Zitat von Adromir Beitrag anzeigen
    Kann es sein, daß die Methode, je nach Sicherheitseinstellung des Empfangenden Servers nicht funktioniert?
    ...
    Es kommt zwar die Bestätigung, daß die Daten gesendet wurden, sie werden vom Script aber nicht eingetragen..
    Es hängt auch von der Funktionsweise des Scripts auf dem Zielserver ab. Viele arbeiten so, dass sie anhand der Session oder eines jeweils zufällig generierten Dummy-Wertes, welcher im Zusammenhang zum User steht, überprüfen, ob der Aufruf tatsächlich von der eigenen Seite kam. Ist der Dummy-Wert nicht vorhanden oder falsch, so wird die Ausführung geblockt.
    Oft will man ganz bewusst Aufrufe durch Fremdscripte verhindern, da sich niemand fremdbestimmen lassen will.
    Am besten nimmst Du Kontakt zum Zielscript-Hoster auf und fragst freundlich, ob das Fremdausfüllen des Formulars gestattet ist und was man technisch beachten muss.
    Gruß, DSB
    Einfaches Backup/ Restore Deiner MySQl-Datenbank
    Zend Certified Engineer PHP5

+ Antworten

Ähnliche Themen

  1. POST-Daten per Link ohne Formular übergeben
    Von Ravelli im Forum Traum-Dynamik
    Antworten: 6
    Letzter Beitrag: 05.10.2008, 22:44
  2. Antworten: 3
    Letzter Beitrag: 17.08.2007, 11:41
  3. Daten innerhalb eines Scriptes weitergeben
    Von Paco im Forum Traum-Dynamik
    Antworten: 12
    Letzter Beitrag: 09.07.2006, 00:19
  4. [php]variable mit dem formular weitergeben
    Von jayjay im Forum Traum-Dynamik
    Antworten: 6
    Letzter Beitrag: 17.03.2006, 01:11
  5. bei linkauswahl daten als variablen weitergeben
    Von theo im Forum Traum-Dynamik
    Antworten: 9
    Letzter Beitrag: 26.10.2002, 22:56

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51