Email prüfung

Status
Nicht offen für weitere Antworten.

Tobey85

Grünschnabel
Hallo,

ich habe getestet in unseren Kontakt-Formular, festgestellt,

wenn man keine Email Adresse angibt, kam dann fehlermeldung, dass EMail Adresse fehlerhaft. Ich meine, diese ist keine Pflichtfeld..

Hier Code:

PHP:
			/*Ist die E-Mail-Adresse richtig eingegeben?*/
			if (ereg("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,3})$", $mail))
				{
				/*E-Mail-Adresse ist richtig*/
				mail("$webmaster","$betreffwebmaster","$koerperwebmaster\n","FROM: $absender\n");

PHP:
/*Welche Fehlermeldung soll ausgegeben werden, wenn die E-Mail-Adresse falsch eingegeben wurde? Bitte mit HTML-Tags arbeiten,
es können auch Klassen für CSS zugewiesen werden*/
$mailfalsch = "<p class=ueber1>Fehler</p><p>Leider ist die E-Mail-Adresse nicht korrekt</p><p>Bitte kontrollieren Sie ihre Eingabe und senden Sie das Formular erneut.";

Kann einer vielleicht hier diese Bug zu beheben? Danke
 
Habe ich getan z.B.:

no@no.ek

--> klappt ja

dsklf

--> klappt nicht

Wenn nichts ausgefüllt, also leere Feld,

dann trotzdem dieser fehlermeldung

Email nicht korrekt... ich will, dass es auch ohne diese Feld ausgefüllt, abzuschicken lassen!
 
Ich hatte mir das eher so vorgestellt:
PHP:
if( trim($mail) !='' && preg_match('/^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,3})$/', $mail) ) {
	mail($webmaster, $betreffwebmaster, $koerperwebmaster."\n", 'FROM: '.$absender);
}
 
hat´s nicht geklappt,

ich füge jetzt hier mit dem kompletten Quelltext:

PHP:
<link href="../style.css" rel="stylesheet" type="text/css">
 <?
/*
############################################################################
#
#   
#
############################################################################
#
# Formmailer
# COPYRIGHT NOTICE                                                           
# Copyright 2004
# All Rights Reserved.                     
#                                                                            
# Formmailer darf von jedermann kostenlos benutzt und geändert werden, solange
# dieser Copyright-Verweis und die restlichen Kommentare erhalten bleiben. Mit
# dem Einsatz dieses Skripts akzeptieren Sie, daß fkunter von jeglicher
# Haftung und Gewährleistung hinsichtlich des Einsatzes befreit ist.
# 
# Der Verkauf dieses Skripts, auch in modifizierter Form, ist ohne vorherige
# schriftliche Genehmigung ausdrücklich untersagt.
# 
# Um dieses Skript über das Internet oder irgendein anderes Medium
# weiterzuverbreiten, benötigen Sie vorher unsere Erlaubnis. In jeden Fall
# müssen der Copyright-Verweis und die restlichen Kommentare erhalten bleiben.
###############################################################################

Dieses Script kann in bestehende PHP-Seiten problemlos eingebaut werden. 
Einfach alles markieren und kopieren. Aber denkt an die obenstehenden Bedingungen.
*/

/*Hier werden alle Daten eingegeben*/
/*An wen soll die Anfrage gerichtet sein?*/
$webmaster = "kontakt@xx.com";

/*Welche E-Mail-Adresse soll als Absender eingegeben werden?*/
$absender = "Katalogbestellung";


/*Wie soll die Mail aussehen, die an den webmaster gerichtet ist? Formularfelder werden wie folgt eingefügt "$NameDesFeldes"*/
/*Betreff*/	$betreffwebmaster = "Katalogbestellung";
/*Textkörper*/  $koerperwebmaster = "$vorname $name ($mail) hat über die Webseite von Springob.com folgende Nachricht hinterlassen:
Firma:			$firma 
Name:			$name 
Vorname:		$vorname 
Straße:			$strasse 
Hausnummer:		$nr 
PLZ:			$plz 
Ort:			$ort 
E-Mail:			$mail 
Telefon:		$tel
Fax:			$fax
Newsletter:		$newsletter
Kommentar:		$nachricht";

/*wie soll die Mail aussehen, die an den Absender gerichtet ist?*/
/*Betreff*/	$betreffabsender = "Katalogbestellung";
/*Textkörper*/ 	$koerperabsender = "text";
	
/*Welche Fehlermeldung soll ausgegeben werden, wenn die E-Mail-Adresse falsch eingegeben wurde? Bitte mit HTML-Tags arbeiten,
es können auch Klassen für CSS zugewiesen werden*/
$mailfalsch = "<p class=ueber1>Fehler</p><p>Leider ist die E-Mail-Adresse nicht korrekt</p><p>Bitte kontrollieren Sie ihre Eingabe und senden Sie das Formular erneut.";

/*Welche Fehlermeldung soll ausgegeben werden, wenn nicht alle Pflicht-Felder ausgefüllt sind?*/
$felderleer = '<p class=ueber1>Fehler</p><p>Die Nachricht konnte nicht versandt werden, da nicht alle Felder ausgefüllt wurden, klicken sie bitte <input type="button" value="zur&uuml;ck" onclick="javascript:history.back();"></p>';  

/*Wie soll der Text aussehen, wenn die E-Mail versendet wurde?*/
$abgesandt = "<p class=ueber1></p><p>Danke für Ihr Interesse. Wir werden Ihre Angaben schnellstmöglich bearbeiten!</p>";

/*Sind alle Felder ausgefüllt? für jedes Feld das ausgefüllt sein muß, muß hier ein entsprechender Eintrag gemacht werden*/
if ($name == "" || $vorname=="" || $strasse=="" || $nr=="" || $plz=="" || $ort=="")
/*##############################################################################
  #Bitte ab hier nichts mehr ändern. Alle Angaben sind im oberen Teil zu machen#
  ##############################################################################*/
	{
	/*nein*/	
	echo "$felderleer";
	}
		else
			{
			/*ja*/
			/*Ist die E-Mail-Adresse richtig eingegeben?*/
			if (ereg("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,3})$", $mail))
				{
				/*E-Mail-Adresse ist richtig*/
				mail("$webmaster","$betreffwebmaster","$koerperwebmaster\n","FROM: $absender\n");					
				/*Soll der Absender eine Kopie erhalten?*/
				if ($kopie == "ja") 
					{
					mail("$mail","$betreffabsender","$koerperabsender","FROM: $absender\n");
					echo "$abgesandt";
					}
				else
					{
					echo "$abgesandt";
					}
				}
				else
				{
					/*nein*/
					echo "$mailfalsch";
				}				
		}
?>
 
Hier hab ich mal ein Kleines Kontaktformular auch mit leerem E-Mailfeld geschrieben:

PHP:
<?php
if (isset($_POST['submit'])) {

  $fehler = false;
  $fehlertext = "";
  
  if (empty($_POST['name'])) {
    $fehler = true;
    $fehlertext .= "<b>Bitte Name angeben!</b><br>\n";
  } elseif (strlen($_POST['name']) < 3) {
    $fehler = true;
    $fehlertext .= "  Ihr Name ist zu Kruz!<br>\n";
  }
  $muster = "/^[a-zA-Z0-9-_.]+@[a-zA-Z0-9-_.]+\.[a-zA-Z]{2,4}$/";
  if (empty($_POST['email']) > 1) {
    $fehler = true;
    $fehlertext .= "<b>Die E-Mail ist nicht Korrekt!</b><br>\n";
  }
  if ($fehler) {
    echo "<p>$fehlertext</p>";
  } else {
    $mailbody = "E-Mail des Absenders: " . $_POST['email'] . "\n\n";
		$mailbody .= $_POST['name'] . " schrieb:\n";
		$mailbody .= "------------------------------------------------\n";
		$mailbody .= $_POST['nach'] . "\n";
		$mailbody .= "------------------------------------------------\n";
    $mailbody = stripslashes($mailbody);
    $absender = $_POST['email'];
    if (@mail("admin@localhost", "Kontakt", $mailbody, "From: $absender")) {
      echo "<p><b>Danke! Die Nachicht wurde weitergeleitet!</b></p>\n";
    } 
	else {
      echo "<p>Leider gab es einen Sendefehler!</p>\n";
    } 
  }
}
?>

Was willst du eigentlich für ein Kontaktformular, wo die E-Mail nicht zwingend ist?

Guck dir das Formular was du gepostet hast ab und schreib daraus dir ein eigenen mit deinen wünschen ist meist einfacher :)
 
Zuletzt bearbeitet:
Also ich erkläre hier noch genauer:

Das Feld soll so ausgefüllt (Katalogbestellung), wenn die User keine E-Mail adresse besitzt, soll das Formular trotzdem abgeschickt werden, nicht Fehlermeldung zu bekommen, dass E-Mail adresse fehlerhaft ist. Also muss im Code irgendwo ändern, damit wenn nur eingegeben worden, dann überprüfug der Adresse, sonst nix.

Versteht ihr, was ich meine?

Zu den frage, Wozu? Wir wollen den E-Mail adresse sammeln in unserer Verteiler-Liste, damit wir Newsletter zu schicken können.
 
Hmm, also für mich klingt das eher nach einer Aufgabe für JS. Wenn du die e-Mailadresse aus einem Textfeld ausliest (müsste ja eigentlich zwangsläufig so sein), dann kannst du mittels JS überprüfen lassen, ob ein Textfeld beim Abschicken gefüllt oder leer ist und dann entsprechend PHP-Funktionen ausführen lassen. Google einfach mal nach "Textfeld + überprüfen + JavaScript".

Oder aber du klärst das ganze mit einer Menüauswahl (switch...case) ab. Überprüfe, ob der Wert des Textfeldes "e-Mailadresse" TRUE oder FALSE ist.
Ist etwas in dem Textfeld enthalten, dann soll anschließend geprüft werden, ob die e-Mailadresse gültig ist oder nicht (funktioniert ja lt. deines Beispiels).
Ist nichts in dem Textfeld enthalten (und somit die übergebene Variable in PHP leer()), dann schicke trotzdem die e-Mail ab (führe also die mail-Funktion in PHP aus).

Ich hoffe, ich konnte dir ein wenig helfen.


btw: Jedoch:
Zu den frage, Wozu? Wir wollen den E-Mail adresse sammeln in unserer Verteiler-Liste, damit wir Newsletter zu schicken können.
muss ich Tobey Recht geben. Wieso eine newsletterliste, wenn es auch die Möglichkeit gibt, dass gar keine e-Mailadresse eingetragen werden kann. - Wie auch immer, ich gehe mal IMHO davon aus, dass du weißt, was du tust *gg*
 
Habe versucht mit dieser Code, klappt nicht mehr... Vielleicht habe ich irgendwo im Code "Virus" gesteckt?! Heh... Bitte hilf mir...:D

Ich komme erst am 31. Juli wieder hier am Arbeitsplatz. Habe dann bald (in einer Stunde) Urlaub bis zum 31. Juli!

PHP:
<?php
if (isset($_POST['submit'])) {

  $fehler = false;
  $fehlertext = "";
  
  if (empty($_POST['vorname'])) {
    $fehler = true;
    $fehlertext .= "<b>Bitte Vorname angeben!</b><br>\n";
  if (empty($_POST['name'])) {
    $fehler = true;
    $fehlertext .= "<b>Bitte Name angeben!</b><br>\n";
  if (empty($_POST['strasse'])) {
    $fehler = true;
    $fehlertext .= "<b>Bitte Name angeben!</b><br>\n";
  if (empty($_POST['nr'])) {
    $fehler = true;
    $fehlertext .= "<b>Bitte Name angeben!</b><br>\n";
  if (empty($_POST['plz'])) {
    $fehler = true;
    $fehlertext .= "<b>Bitte Name angeben!</b><br>\n";
  if (empty($_POST['ort'])) {
    $fehler = true;
    $fehlertext .= "<b>Bitte Name angeben!</b><br>\n";
  } elseif (strlen($_POST['name']) < 3) {
    $fehler = true;
    $fehlertext .= "  Ihr Name ist zu kurz!<br>\n";
  }
  $muster = "/^[a-zA-Z0-9-_.]+@[a-zA-Z0-9-_.]+\.[a-zA-Z]{2,4}$/";
  if (empty($_POST['mail']) > 1) {
    $fehler = true;
    $fehlertext .= "<b>Die E-Mail ist nicht Korrekt!</b><br>\n";
  }
  if ($fehler) {
    echo "<p>$fehlertext</p>";
  } else {
    $mailbody = "E-Mail des Absenders: " . $_POST['mail'] . "\n\n";
        $mailbody .= $_POST['name'] . " schrieb:\n";
        $mailbody .= "------------------------------------------------\n";
        $mailbody .= $_POST['firma'] . "\n"
        $mailbody .= $_POST['vorname'] . "\n"
        $mailbody .= $_POST['name'] . "\n"
		$mailbody .= $_POST['strasse'] . "\n"
		$mailbody .= $_POST['nr'] . "\n"
		$mailbody .= $_POST['plz'] . "\n"
        $mailbody .= $_POST['ort'] . "\n"
        $mailbody .= $_POST['tel'] . "\n"
        $mailbody .= $_POST['mail'] . "\n"
        $mailbody .= $_POST['nachricht'] . "\n";
        $mailbody .= "------------------------------------------------\n";
    $mailbody = stripslashes($mailbody);
    $absender = $_POST['mail'];
    if (@mail("kontakt@xx.com", "Kontakt", $mailbody, "From: $absender")) {
      echo "<p><b>Danke! Die Nachicht wurde weitergeleitet!</b></p>\n";
    } 
    else {
      echo "<p>Leider gab es einen Sendefehler!</p>\n";
    } 
  }
}
?>
 
Hier mal angepasst, ich habe einfach einen kleinen Zusatz bei der Prüfung der Email angehängt...
PHP:
<link href="../style.css" rel="stylesheet" type="text/css">
 <?
/*
############################################################################
#
#   
#
############################################################################
#
# Formmailer
# COPYRIGHT NOTICE                                                           
# Copyright 2004
# All Rights Reserved.                     
#                                                                            
# Formmailer darf von jedermann kostenlos benutzt und geändert werden, solange
# dieser Copyright-Verweis und die restlichen Kommentare erhalten bleiben. Mit
# dem Einsatz dieses Skripts akzeptieren Sie, daß fkunter von jeglicher
# Haftung und Gewährleistung hinsichtlich des Einsatzes befreit ist.
# 
# Der Verkauf dieses Skripts, auch in modifizierter Form, ist ohne vorherige
# schriftliche Genehmigung ausdrücklich untersagt.
# 
# Um dieses Skript über das Internet oder irgendein anderes Medium
# weiterzuverbreiten, benötigen Sie vorher unsere Erlaubnis. In jeden Fall
# müssen der Copyright-Verweis und die restlichen Kommentare erhalten bleiben.
###############################################################################

Dieses Script kann in bestehende PHP-Seiten problemlos eingebaut werden. 
Einfach alles markieren und kopieren. Aber denkt an die obenstehenden Bedingungen.
*/

/*Hier werden alle Daten eingegeben*/
/*An wen soll die Anfrage gerichtet sein?*/
$webmaster = "kontakt@xx.com";

/*Welche E-Mail-Adresse soll als Absender eingegeben werden?*/
$absender = "Katalogbestellung";


/*Wie soll die Mail aussehen, die an den webmaster gerichtet ist? Formularfelder werden wie folgt eingefügt "$NameDesFeldes"*/
/*Betreff*/    $betreffwebmaster = "Katalogbestellung";
/*Textkörper*/  $koerperwebmaster = "$vorname $name ($mail) hat über die Webseite von Springob.com folgende Nachricht hinterlassen:
Firma:            $firma 
Name:            $name 
Vorname:        $vorname 
Straße:            $strasse 
Hausnummer:        $nr 
PLZ:            $plz 
Ort:            $ort 
E-Mail:            $mail 
Telefon:        $tel
Fax:            $fax
Newsletter:        $newsletter
Kommentar:        $nachricht";

/*wie soll die Mail aussehen, die an den Absender gerichtet ist?*/
/*Betreff*/    $betreffabsender = "Katalogbestellung";
/*Textkörper*/     $koerperabsender = "text";
    
/*Welche Fehlermeldung soll ausgegeben werden, wenn die E-Mail-Adresse falsch eingegeben wurde? Bitte mit HTML-Tags arbeiten,
es können auch Klassen für CSS zugewiesen werden*/
$mailfalsch = "<p class=ueber1>Fehler</p><p>Leider ist die E-Mail-Adresse nicht korrekt</p><p>Bitte kontrollieren Sie ihre Eingabe und senden Sie das Formular erneut.";

/*Welche Fehlermeldung soll ausgegeben werden, wenn nicht alle Pflicht-Felder ausgefüllt sind?*/
$felderleer = '<p class=ueber1>Fehler</p><p>Die Nachricht konnte nicht versandt werden, da nicht alle Felder ausgefüllt wurden, klicken sie bitte <input type="button" value="zur&uuml;ck" onclick="javascript:history.back();"></p>';  

/*Wie soll der Text aussehen, wenn die E-Mail versendet wurde?*/
$abgesandt = "<p class=ueber1></p><p>Danke für Ihr Interesse. Wir werden Ihre Angaben schnellstmöglich bearbeiten!</p>";

/*Sind alle Felder ausgefüllt? für jedes Feld das ausgefüllt sein muß, muß hier ein entsprechender Eintrag gemacht werden*/
if ($name == "" || $vorname=="" || $strasse=="" || $nr=="" || $plz=="" || $ort=="")
/*##############################################################################
  #Bitte ab hier nichts mehr ändern. Alle Angaben sind im oberen Teil zu machen#
  ##############################################################################*/
    {
    /*nein*/    
    echo "$felderleer";
    }
        else
            {
            /*ja*/
            /*Ist die E-Mail-Adresse richtig eingegeben?*/
            if (ereg("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,3})$", $mail) OR $mail == "")
                {
                /*E-Mail-Adresse ist richtig*/
                mail("$webmaster","$betreffwebmaster","$koerperwebmaster\n","FROM: $absender\n");                    
                /*Soll der Absender eine Kopie erhalten?*/
                if ($kopie == "ja") 
                    {
                    mail("$mail","$betreffabsender","$koerperabsender","FROM: $absender\n");
                    echo "$abgesandt";
                    }
                else
                    {
                    echo "$abgesandt";
                    }
                }
                else
                {
                    /*nein*/
                    echo "$mailfalsch";
                }                
        }
?>
 
Status
Nicht offen für weitere Antworten.
Zurück