Ein Formular an eine php-Datei senden und dann automatisch weitersenden

  • Hallo,

    ich bin neu und sollte mich eigentlich vorstellen, kommt später.

    Ich habe ein triviales Problem, zu dem ich einfach nichts im Web finde. Ich bin kein Programmierer und mit PHP hab ich erst recht noch keine Erfahrung


    Ich habe eine HTML-Datei mit einem Formular, darin einfache Felder und eine Recaptcha Abfrage . Basis bildete ein Konstrukt, das unter https://codeforgeek.com/2014/12/google-recaptcha-tutorial/ beschrieben ist. Das hier beschriebene Vorgehen funktioniert einwandfrei. Meine Anwendung, die ich dahinter absichern will, unterstützt kein RechaptaV2.


    in der Form.php wird über ein IF/Else geprüft, ob die Rechapta-Eingabe richtig war (funktioniert tadellos) und bei richtiger Eingabe ein Echo ausgegeben.


    Was ich jetzt suche ist eine Moglichkeit, die übergebenen Werte an die form.php an eine dritte Datei zu übergeben (also an die tatsächliche Anwendung) also beginnend mit


    <form action="Domain/form2.php" method="post">

    ....

    $email;$anmerkung;$captcha;$anrede;$vorname;

    if(isset($_POST['email'])){

    $email=$_POST['email'];

    }


    if(isset($_POST['anmerkung'])){

    $anmerkung=$_POST['anmerkung'];

    }

    if(isset($_POST['Anrede'])){

    $anrede=$_POST['Anrede'];

    }

    ....


    $secretKey = "w5jwjhjww45wwwjw434242424jgg";

    $ip = $_SERVER['REMOTE_ADDR'];

    $response=file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=".$secretKey."&response=".$captcha."&remoteip=".$ip);

    $responseKeys = json_decode($response,true);

    if(intval($responseKeys["success"]) !== 1) {

    echo '<h2>You are spammer ! Get the @$%K out</h2>';

    } else {
    XXXXXXXXXXXXXX
    }

    die Daten ganz automatisch an form2.php übergeben.


    Was muss ich da in XXXXX reinschreiben, dass die oberen Daten automatisch übergeben werden?


    Ich Dank schon mal im voraus!

    Dieser Beitrag wurde bereits 1 Mal editiert, zuletzt von StephanLarge () aus folgendem Grund: Tibfähler

  • Code
    1. $email;$anmerkung;$captcha;$anrede;$vorname;

    Was soll bitte das sein? Wenn du initialisierst, dann so:

    Code
    1. $email = $anmerkung = $captcha = $anrede = $vorname = '';


    Code
    1. if(isset($_POST['email'])){
    2. $email=$_POST['email'];
    3. }
    4. if(isset($_POST['anmerkung'])){
    5. $anmerkung=$_POST['anmerkung'];
    6. }
    7. if(isset($_POST['Anrede'])){
    8. $anrede=$_POST['Anrede'];
    9. }

    Das kannst du dir leichter machen, denn wenn ein Formular gesendet wird, sind alle Felder, egal ob leer oder nicht, gesetzt. Ausnahme bilden dabei Radiobutton und Checkboxen. Deshalb reicht in deinem Fall:

    Code
    1. if(isset($_POST['email']))
    2. {
    3. $email = $_POST['email'];
    4. $anmerkung = $_POST['anmerkung'];
    5. $anrede = $_POST['Anrede'];
    6. }
  • Guten Morgen,


    StephanLarge :


    Willkommen im Forum.


    Zitat


    Was ich jetzt suche ist eine Moglichkeit, die übergebenen Werte an die form.php an eine dritte Datei zu übergeben (also an die tatsächliche Anwendung) also beginnend mit

    Du hast bestimmt auf der 1nen Seite das Formular und auf dieser Seite überprüfst du die ganzen Daten. Was man früher gemacht hat ist dem form tag das action attribut geben und darin den Link angeben, welcher aufgerufen werden soll, wenn das Formular abgesendet wurde. Dies brauchst du heutzutage eigentlich nicht mehr. Du kannst das Formular und den PHP-Teil in einer Seite belassen.


    Am Anfang, bevor HTML kommt, erstellst du dann den PHP-Teil. In HTML kommen dann nurnoch die Ausgaben von PHP-Variablen dazu.


    m.scatello :


    Zitat

    Das kannst du dir leichter machen, denn wenn ein Formular gesendet wird, sind alle Felder, egal ob leer oder nicht, gesetzt. Ausnahme bilden dabei Radiobutton und Checkboxen. Deshalb reicht in deinem Fall:


    Code

    1. if(isset($_POST['email']))
    2. {
    3. $email = $_POST['email'];
    4. $anmerkung = $_POST['anmerkung'];
    5. $anrede = $_POST['Anrede'];
    6. }

    Dies stimmt so nicht. Wenn nun ein User nur die E-Mail angibt und den rest nicht. Dann hat man 2 mal eine Warnung oder Notiz mit Undefined Index nachdem Formular absenden.


    In PHP 7 ist das ja ganz einfach zu verhindern:

    PHP
    1. $email = $_POST['email'] ?? null;

    In PHP 5.* geht die kurzschreibweise so:

    PHP
    1. $email = isset($_POST['email']) ? $_POST['email'] : null;


    Grüße,

    Stef

  • Dies stimmt so nicht. Wenn nun ein User nur die E-Mail angibt und den rest nicht. Dann hat man 2 mal eine Warnung oder Notiz mit Undefined Index nachdem Formular absenden.

    Diese Aussage ist falsch, teste selber

  • m.scatello :


    Okay. Wenn man die Variablen am Anfang initialisiert.


    Dein Code in deinem vorigen Post hatte diese Intialisierung aber nicht.


    PHP
    1. if(isset($_POST['email']))
    2. {
    3. $email = $_POST['email'];
    4. $anmerkung = $_POST['anmerkung'];
    5. $anrede = $_POST['Anrede'];
    6. }
  • Cool, aber wir sollen es nicht akademisch machen. Vielleicht nochmal einen Schritt zurück, zum "Weshalb" und dann zum Lösungsansatz (der auch falsch sein kann) und dann zur Frage.


    Ausgangssituation:

    1) Clickundwerdeglücklichinstallation von Formtools 2.2.6 auf Webserver mit einer Datenbank

    2) Erstellung eines Standardformulars auf einer Webseite und Einbindung der Formtoolslinks

    3) Alles SuperEasyEinfach. Formtools akzeptiert nur Formulareingaben von einer bestimmten URL, speichert die Eingänge in einer DB die mandantenfähig ist (also eine Installation für unzählige Webprojekte möglich) und versendet die eingegangenen Einträge dann per Mail an "Kunden". Die Mail kann gecustomised werden, alle glücklich, bis... der erste Spamer durchgeschlagen hat. Wenn es manueller Spam gewesen wäre, hätte man das erwartet, nein, es war ein Bot mit kyrillischen Schriftzeichen und Datenmüll..., Mail im Pfarramt :-)


    Also Spamverhinderung, aber es soll für den Kunde einfach sein, kein CAPTCHA mit Zeichenfummelei, es soll auch älteren Menschen kein Hindernis sein. also reCaptcha... nur doof, dass Formtools 2.2.6 das nicht unterstützt und die 3.0 Version nur mit lokalen Formularen. Also andere Idee


    EVA-Ansatz:

    1. HTML-Seite enthält das Formular mit reChaptcha

    2. PHP-Seite macht die Überprüfung mit Botfilter (gerne auch mit Ingos Zeitabfrage http://www.1ngo.de/web/captcha-spam.html)

    3. PHP-Seite übergibt dann die Werte bei positiver Prüfung an Formtools


    1 und 2 läuft ja, also Codeoptimierung gerne nachgelagert. Die Frage ist nur:


    Wie übergebe ich in der IF/Else-Abfrage die Werte an Formtools?

    In der php-Seite steht natürlich oben:


    <form action="http://formtools.org/process.php" method="post">

    <input type="hidden" name="form_tools_initialize_form" value="1" />

    <input type="hidden" name="form_tools_form_id" value="232" />

    ...

    $email;$anmerkung;$captcha;$anrede;$vorname;$nachname;$tel;

    if(isset($_POST['email'])){

    $email=$_POST['email'];

    ...

    if(intval($responseKeys["success"]) !== 1) {

    echo '<h2>You are spammer ! </h2>';

    }

    else

    {

    XXXXXX

    }



    und bei else muss ja irgendwie ein Submit der Werte $email;$anmerkung;$captcha;$anrede;$vorname;$nachname;$tel; an Formtools ausgelöst werden.. Nur das ist die Frage.


    Danke!

    PS: Vorstellung wurde nachgereicht