Ankündigung

Einklappen
Keine Ankündigung bisher.

Erweiterung des Kontakt-Formulars auf "E-Mail wiederholen"

Einklappen

Neue Werbung 2019

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

  • Erweiterung des Kontakt-Formulars auf "E-Mail wiederholen"

    Hallo alle zusammen, ich habe mein Kontaktformular in der html um ein weiteres Eingabefeld erweitert, das den User dazu zwingen soll seine E-Mail erneut einzugeben. Die zugehörige PHP soll nun prüfen, ob die beiden E-Mail-Eingaben identisch sind bzw. den User auf einen Fehler hinweisen.

    Das ganz funktioniert noch nicht. Obwohl ich unterschiedliche E-Mailadressen eingebe, wird die Funktion ignoriert, stattdessen wird der User auf Eingabe der Nachricht hingewiesen. Weiß jemand wo der Fehler ist? (Vermutlich in der fett markierten Zeile). Danke im Voraus.

    Code:
    <?php
    if(isset($_POST['msgcheck']) && $_POST['msgcheck'] == 1) 
    
    {
    		if ($_POST['name'] == ''){$err_msg = "<p class='ermsg'>Bitte geben Sie Ihren Namen ein!</p>";} 
    		
    		elseif ($_POST['email'] == ''){$err_msg = "<p class='ermsg'>Bitte geben Sie Ihre E-Mail-Adresse ein!</p>";}   
    		
    		elseif (!preg_match("/^[[:alnum:]][a-z0-9_.-]*@[a-z0-9.-]+\.[a-z]{2,4}$/i", trim($_POST['email']))){$err_msg = "<p class='ermsg'>Bitte überprüfen Sie Ihre E-Mail-Adresse! Diese scheint einen Fehler zu beinhalten.</p>";} 
    		
    		elseif ($_POST['email_re'] == ''){$err_msg = "<p class='ermsg'>Bitte wiederholen Sie die Eingabe Ihrer E-Mail-Adresse im entsprechenden Eingabefeld!</p>";}    
    		
    		elseif ($_POST['email_re'] == $_POST['email']){$err_msg = "<p class='ermsg'>Bitte überprüfen Sie beide von Ihnen angegebenen E-Mail-Adressen! Diese sind nicht identisch.</p>";} 
    			
    		elseif ($_POST['message'] == ''){$err_msg = "<p class='ermsg'>Bitte geben Sie im untersten Eingabefeld Ihre Nachricht ein!</p>";} 
    		
    		else 
    
    	{
    
    		$successmail = 1;
    		 
    		$inhalt = "Sie haben eine Anfrage über Ihre Webseite mit folgenden Inhalt erhalten,<br><br>
    		
    		Name: ".$_POST['name']."<br/>
    		E-Mail-Adresse: ".$_POST['email']."<br/><br/><br/>
    		Nachricht: ".$_POST['message'];
    		
    		$header = "Anfrage über die Webseite";
    		
    		require_once('class/class.phpmailer.php');
    		
    		$mail             = new PHPMailer(); // defaults to using php "mail()"
    		
    		$body             = $inhalt;
    		$body             = eregi_replace("[\]",'',$body);
    		
    		$mail->AddReplyTo($_POST['email'], $_POST['name']);
    		
    		$mail->SetFrom($_POST['email'], $_POST['name']);
    		
    		$mail->AddReplyTo($_POST['email'],$_POST['name']);
    		
    		$address = "info@xxx.de";
    		$mail->AddAddress($address, "xxx");
    		$mail->CharSet = 'utf-8';
    		
    		$mail->Subject    = "$header";
    		
    		$mail->AltBody    = "Um diese Nachricht zu lesen, benötigen Sie einen HTML-Email-Viewer"; // optional, comment out and test
    		
    		$mail->MsgHTML($body);
    		
    		    if (!$mail->Send()) {
    		    	    			echo "Mailer Error: " . $mail->ErrorInfo;
    		    			} else 
    		    				{
    		    					$sucmsg = "Die Nachricht wurde erfolgreich versendet";
    		    				}
    
        	}
    }
        
    ?>


  • #2
    Hi,

    bitte die PHP Code Tags nutzen, damit wir den Quellcode besser lesen können.

    Du hast u.a. hier nen Fehler

    PHP-Code:
    elseif ($_POST['email_re'] == $_POST['email']){$err_msg "<p class='ermsg'>Bitte überprüfen Sie beide von Ihnen angegebenen E-Mail-Adressen! Diese sind nicht identisch.</p>";} 
    da fehlt ein "."

    PHP-Code:
    elseif ($_POST['email_re'] == $_POST['email']){$err_msg .= "<p class='ermsg'>Bitte überprüfen Sie beide von Ihnen angegebenen E-Mail-Adressen! Diese sind nicht identisch.</p>";} 
    Ansonsten überschreibst Du jedesmal deine $err_msg. Zudem solltest du das nicht in einem if elseif block machen, sondern lieber Fehler "sammeln", z.B.

    PHP-Code:
    //...
    $fehler "";

    if(empty(
    $_POST["meinFeld1"]))
    {
     
    $fehler .= "<li>Bitte füllen Sie das Feld1 aus!</li>";
    }
    if(empty(
    $_POST["meinFeld2"]))
    {
     
    $fehler .= "<li>Bitte füllen Sie das Feld2 aus!</li>";
    }
    // usw.

    if(!empty($fehler))
    {
     echo 
    "<b>Fehler:</b> <ul>".$fehler."</ul>";
    }
    else
    {
     echo 
    "alles i.O.";

    Das nur als Ansatz. Fehlt natürlich die Validierung.


    mfg Wolf29
    while (!asleep()) sheep++;

    Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

    Kommentar


    • #3
      Zitat von wolf29 Beitrag anzeigen
      Hi,

      da fehlt ein "."

      PHP-Code:
      elseif ($_POST['email_re'] == $_POST['email']){$err_msg .= "<p class='ermsg'>Bitte überprüfen Sie beide von Ihnen angegebenen E-Mail-Adressen! Diese sind nicht identisch.</p>";} 
      Hallo Wolf29,

      den "." habe ich ergänzt. An der Funktion hat sich aber nichts geändert. Trotz Eingabe zweier unterschiedlichen E-Mail-Adressen, lässt sich die Nachricht versenden. Hast du noch eine andere Idee?

      PS: Mit der anderen $fehler-Funktion kann ich im Moment nichts anfangen, da ich mich mit PHP nicht auskenne und auch sonst kein begeisterter Programmierer bin. Wenn ich die if-elself-Funktion mit Deiner Unterstützung zum laufen bringe, wäre ich schon glücklich. Was ist eigentlich der Nachteil mit if-elself und was der Vorteil mit $fehler?

      Kommentar


      • #4
        Hast du noch eine andere Idee?
        Ja, debugge http://php-de.github.io/#debugging deinen Code und finde deine Fehler selbst, das gehört zum programmieren dazu.

        da ich mich mit PHP nicht auskenne und auch sonst kein begeisterter Programmierer bin
        Erstelle doch einen Auftrag in der Scriptbörse http://www.php.de/scriptboerse/

        LG
        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
        PHP.de Wissenssammlung | Kein Support per PN

        Kommentar


        • #5
          Hey,

          PHP-Code:
          elseif ($_POST['email_re'] == $_POST['email']) 
          wirft auch einen Fehler, wenn die beiden E-Mails gleich sind.

          Prüfe ob die E-Mails unterschiedlich sind und nicht ob sie gleich sind

          Kommentar


          • #6
            Zitat von CoKeSiDe Beitrag anzeigen
            Hey,

            PHP-Code:
            elseif ($_POST['email_re'] == $_POST['email']) 
            wirft auch einen Fehler, wenn die beiden E-Mails gleich sind.

            Prüfe ob die E-Mails unterschiedlich sind und nicht ob sie gleich sind
            Danke CoKeSiDe! Jetzt funktioniert alles

            Richtig wäre:

            PHP-Code:
            elseif ($_POST['email_re'] != $_POST['email']) 

            Kommentar

            Lädt...
            X