bert: Formular von User kontrollieren lassen + per mail versenden

Hallo,
langsam bin ich am verzweifeln.
Es geht darum, daß ich ein Formular habe mit etwa 20 Variablen. Das Formular wird von einem User ausgefüllt. Nachdem abschicken soll es nochmal auf dem Bildschirm erscheinen mit dem Kommentar: Bitte überprüfen Sie ihre Angaben. Auch wenn nichts falsch war. Wenn was fehlt kommt Fehlermeldung. Danach soll das Formular per mail versendet werden.
Würde ich nicht das Kontrollformular dazwischen schalten, würde alles funktionieren. Es tauchen Probleme beim zweifachen Auslesen der Variablen auf. Ich habe auch schon versucht das Problem mit Php_Self zu lösen, aber es will einfach nicht.
Hat von Euch noch einer einen guten Tip für mich. Ich wäre echt sehr Dankbar.
Grüße bert

  1. Hallo Bert,

    hast du ein Stückchen Code, einen Beispiellink und eine etwas genauere Beschreibung des Problemes?

    Gruß
    Paul

    1. Hallo Bert,

      hast du ein Stückchen Code, einen Beispiellink und eine etwas genauere Beschreibung des Problemes?

      Gruß
      Paul

      Hallo Paul,
      hier ist der Code für das Formular. Die Funktion zum versenden der Mail fehlt noch.
      Das Problem ist jetzt, daß die Variablen Seminar, Name, Vorname in einer Mail verschickt werden sollen.
      Der User soll nach der Eingabe nochmal die Möglichkeit erhalten sich seine Daten anzusehen. Deshalb soll beim erstenmal abschicken das gleiche Formular mit den eingegebenen Daten erscheinen und beim zweitenmal abschicken sollte dann die mail rausgehen. Aber irgendwie schaffe ich es nicht die Variablen in der Mail zu verschicken.
      Wenn ich ein ganz normales Formular habe, ohne PHP_SELF funktioniert es.
      Hoffe Du kannst damit etwas mehr anfangen.
      Gruß bert

      <html>
      <head>
        <title>Anmeldeformular</title>

      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
      </head>
       <body bgcolor="#ffffff">
      <div align="center"><u><font size="+2"><b>Meldeformular </b></font></u> </div>
      <form action="<?php echo $PHP_SELF?>">
        <table width="90%" border="1" height="471" bord ercolorlight="#FFFFFF" bordercolor="#e3e3e3">
          <tbody>
          <tr>
            <td width="49%" height="267">
              <table width="75%" border="0">
                <tr>
                  <td width="48%">Seminar:</td>
                  <td width="39%" >
                    <select name="aSeminar" value=<?php print $aSeminar?>>
                      <option>Segeln</option>
                      <option>Fitness</option>
                      <option>Management</option>
                      <option>Trendsport</option>
                    </select>
                  </td>
                </tr>
                <tr>
                  <td width="37%">Vorname*:</td>
                  <td width="63%">
                    <input type="text" name="aVorname" size="35" maxlength="50" value=<?php print $aVorname?>>
                  </td>
                </tr>
                <tr>
                  <td width="39%">Name*:</td>
                  <td width="61%">
                    <input type="text" name="aName" size="35" maxlength="50" value=<?php print $aName?>>
                  </td>
                </tr>
                </tbody>
              </table>
          <div id="Layer1" style="position: absolute; width: 784px; height: 115px; z-index: 1; left: 12px; top: 611px; ">
          <input type="submit" name="do_form_x" value="Abschicken">
          <input type="reset" name="Zureucksetzen" value="Zurücksetzen">
        </div>

      1. Hallo Bert,

        Wenn ich ein ganz normales Formular habe, ohne PHP_SELF funktioniert es.

        Die Variable $PHP_SELF (besser ist $_SERVER['PHP_SELF']) enthält den Namen des gerade ausgeführten Scripts, also das Formular. So schickst du das Formular jedes mal an sich selbst.

        Für den zweiten Aufruf musst du also das action-Attribut ändern.

        Als Anregung: Das könnte z.B. so aussehen, daß du abfragst ob ein bestimmtes Formularfeld gesetzt ist. Wenn ja wird beim nächsten mal versendet, wenn nicht gehts zurück in die Kontrollansicht

        <form action="<?php if(isset($_GET{'aSeminar'])) { my_mail_sender.php } else { echo $_SERVER['PHP_SELF'] }?>">

        Noch eine persönliche Anmerkung: Ich würde solche Kontrollabfragen mit Vorsicht und nur bei wirklich sensiblen Daten einsetzen. Rückfragen nach dem Motto "Sind Sie sicher, das sie wirklich gemeint haben was Sie getippt haben..." werden schnell zum Nerv-Faktor. Ich würde nur Rückfragen, wenn Daten fehlen oder fehlerhaft sind.

        Gruß
        Paul

  2. Hallo Bert,

    nun nciht gleich den Kopf hängen lassen. Es gibt hier eine Menge kompetente Leute. Heute scheint aber irgendwas "Wichtiges" los zu sein. Gibts Fußball? Ich interessiere mich nicht so dafür...

    Zum Thema:

    Hast Du einen (egenen)Server mit PHP oder ASP zur Verfügung?
    Wenn nicht, bleibt Dir nur Javascript. Die Kontrolle findet dann nur auf dem Client statt. Das macht nicht so richtig Spaß, geht aber auch.

    Wenn doch, dann mal Dir ein Bild.

    Am Anfang war das Nichts, das heißt, daß das Formular mit leeren Feldern geöffnet wird. Du kannst die Formularerzeugung trotzdem mit PHP durchführen. Alle Value-Zuweisungen (Textvariablen) und Checked-Anweisdungen (Radio-Buttons, Checkboxen) und Textvariablen (Textarea) sind eben leer. Die Form-Action ist auf das Formular selbst gerichtet. Die Variable Test gibt es gar nicht

    if ($test)
    {
      TestsDurchführen;
    }

    Ser Submitbutten hat den Namen Test und den Value 'Daten prüfen'

    Wenn keine Fehler mehr drin sind, bekommt der Submit-Button den Namen Send und den Value 'Daten absenden'

    if ($Send)
    {
      DatenVerarbeiten
    }

    Solange keine dieser beiden Variablen existiert, wird das Formular normal leer ausgegeben.

    In PHP ist es üblich, Formularantworten (immer) an das Formular selbst zu richten. Dann kann man im Design keine Fehler machen und kein Feld vergessen.

    Wenn man die Felder in eine Tabelle stellt, kann man fehlerhafte Felder leicht mit einem farblichen Rand markieren lassen; ohne Javascript, geht dann bei allen üblichen Browsern. Einfach den Feldhintergund einfärben.

    Mehr fällt mit dazu derzeit nicht ein.

    Gruß

    Tom

    1. Ich habe versucht die form action nach einer Bedingung zu ändern. Dies sieht so aus:
      <form action = "<?php
      if ($kontrolle)
      {
      $kontrolle = "senden";
       echo $SERVER_['PHP_SELF'];
      }
      if ($senden){
      "kleinemail.php";
       } ?>"
      Der Wert Kontrolle bezieht sich auf den Submit Button.
      <input type="submit" name="kontrolle" value="Abschicken">
      Damit möchte ich erreichen, daß beim ersten klick PHP_SELF durchgeführt wird und beim zweiten klick auf den Absende Button dann die mail verschickt wird.
      Das ist aber nicht der Fall. Das Formular ruft immer nur sich selbst auf. Wo habe ich den Denkfehler?
      Grüße bert