Email check

OH GOTT. Das ist hoffentlich nicht dein Ernst!
Formatiere dein Code! Dass da Fehler drin sind ist klar. Es währe komisch wenn da keine drin sind.
Beim Formatieren findet man normalerweise fehlende Klammern. So wie dein Code ist, kommt man nicht um Klammern zählen herum.

Zitat aus meiner Signatur

Hi, wie kann ich denn das formatiert hier einsetzen?
 
Tabulatoren und Leerzeichen innerhalb der PHP-Tags werden als Tabulatoren und Leerzeichen angezeigt.
Also einfach den Formatierte Code aus deinem Editor ins Forum kopieren. Das ganze in PHP-Tags setzen und fertig.
Aber was erkläre ich da. Am Anfang vom Thread konntest du es ja auch.

Warum fühle ich mich so verarscht?
 
Besser?

Code:
 <?php

$Empfaenger = "info@test.de";

if($_POST['Send'])
{
if(empty($_POST['Name']) || empty($_POST['Email']) || empty($_POST['Telefon'])|| empty($_POST['Code']) || empty($_POST['Werkstatt']) || empty($_POST['Kontakt']))
{
echo"Bitte gehen Sie <a href=\"javascript:history.back();\">zurück</a> und füllen Sie alle markierten Felder aus!";
}
function is_email($email)	
{
if(filter_var($email, FILTER_VALIDATE_EMAIL))
{
list($email,$domain) = explode('@',$email);
if(!getmxrr ($domain,$mxhosts))
{
return false;
}
else
{
return true;
}
}
else
{
return false;
}
} 
{
    echo "Bitte gehen sie <a href=\"javascript:history.back();\">zurück</a> und geben eine g&uuml;ltige Email-Adresse ein!</font>";
    exit;}
}
else
{
$Mailbetreff = "Kontakt: Franchise/Service Point";
$Mailbetreff .= $_POST['Betreff'];

$Trenner = md5(uniqid(time()));  
$Mailbetreff .= $_POST['Betreff'];

$Trenner = md5(uniqid(time()));

$Header = "From: ".$_POST['Email'];
$Header .= "\n";
$Header .= "MIME-Version: 1.0";
$Header .= "\n";
$Header .= "Content-Type: multipart/mixed; boundary=$Trenner";
$Header .= "\n\n";
$Header .= "This is a multi-part message in MIME format";
$Header .= "\n";
$Header .= "--$Trenner";
$Header .= "\n";
$Header .= "Content-Type: text/plain";
$Header .= "\n";
$Header .= "Content-Transfer-Encoding: 8bit";
$Header .= "\n\n";
$Header .= "Sie haben folgende Nachricht erhalten: \n\n";

while(list($Formularfeld, $Wert) = each($_POST))
{
if($Formularfeld != "Send" && $Formularfeld != "Anhang")
{
$Header .= $Formularfeld.": ".$Wert."\n";
}
}

$Header .= "\nDatum/Zeit: ";
$Header .= date("d.m.Y H:i:s");
$Header .= "\n";
$Header .= "--$Trenner";
$Header .= "\n";
$Header .= "Content-Type: ";
$Header .= $_FILES['Anhang']['type'];
$Header .= "; name=";
$Header .= $_FILES['Anhang']['name'];
$Header .= "\n";
$Header .= "Content-Transfer-Encoding: base64";
$Header .= "\n";
$Header .= "Content-Disposition: attachment; filename=";
$Header .= $_FILES['Anhang']['name'];
$Header .= "\n\n";
$Header .= chunk_split(base64_encode($Dateiinhalt));
$Header .= "\n";
$Header .= "--$Trenner--";

mail($Empfaenger, $Mailbetreff, "", $Header);
echo"<p>Vielen Dank für Ihre eMail!<br> In der Regel beantworten wir ihre Anfrage innerhalb der nächsten 24 Stunden. <br>Ihr GTM Team</p>";
}
}
else
{ ?>
<table border="0" cellpadding="1" cellspacing="2">
<form action="<?php echo$_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data" method="post">
<h1>Kontaktformular</h1>
<p>Bitte füllen Sie alle mit * markierten Felder aus. (Pflichtfelder)</p>
<tr>
<td>Ihr Name*:</td>
<td><input name="Name" size="20" type="text"></td>
</tr>
<tr>
<td>Firma:</td>
<td><input name="Firma" size="20" type="text"></td>
</tr>
<tr>
<td>Strasse:</td>
<td><input name="Strasse" size="20" type="text"></td>
</tr>
<tr>
<td>PLZ / Ort:</td>
<td><input name="Ort" size="20" type="text"></td>
</tr>
<tr>
<td>Telefon*:</td>
<td><input name="Telefon" size="20" type="text"></td>
</tr>
<tr>
<td>Ihre eMail-Adresse*:</td>
<td><input name="Email" size="20" type="text"></td>
</tr>
<tr>
<tr><td align="left" valign="top">Ihre Kontaktanfrage*:</td>
<td>
<input type="radio" class="Radio" name="Kontakt" value="Franchise"> Franchise<br>
<input type="radio" class="Radio" name="Kontakt" value="Service Point"> Service Point
</td>
<tr><td align="left" valign="top">Wekstatt*:</td>
<td>
<input type="checkbox" class="Check" name="Werkstatt" value="vorhanden"> vorhanden<br>
<input type="checkbox" class="Check" name="Werkstatt" value="Nicht vorhanden"> nicht vorhanden<br>
</td>
<tr>
<td>Ihre Nachricht:</td>
<td><textarea cols="25" name="Nachricht" rows="5"></textarea></td>
</tr>
<tr>
<td>Anhang:</td>
<td><input name="Anhang" size="20" type="file"></td>
</tr>
<td>Bitte geben sie den Sicherheitscode ein: "GTM"</td>
<td><input name="Code" size="20" type="text"></td>
</tr>
<tr>
<td align="right" colspan="2"><input name="Send" type="submit" value="Formular absenden"> <input name="Reset" type="reset" value="Formular Löschen"></td>
</tr>
</tr></form>
</table>
<?php
}
?>
 
Wenn ich das richtig gesehen habe nutzt du zwei else hintereinander.
PHP:
if($_POST['Send'])
{
	// Validierung
}
else
{
	// E-Mail versand
}
else
{
	// Formular
}
So weiß PHP nicht in welches "else" er springen soll....
Du solltest dann lieber mit else if arbeiten

Und so meint Yaslaw formatierung von Code
PHP:
if($_POST['Send'])
{
	if(empty($_POST['Name']) || 
	   empty($_POST['Email']) || 
	   empty($_POST['Telefon'])|| 
	   empty($_POST['Code']) || 
	   empty($_POST['Werkstatt']) || 
	   empty($_POST['Kontakt']))
	{
		echo"Bitte gehen Sie <a href=\"javascript:history.back();\">zurück</a> und füllen Sie alle markierten Felder aus!";
	}
	
	function is_email($email)   
	{
		if(filter_var($email, FILTER_VALIDATE_EMAIL))
		{
			list($email,$domain) = explode('@',$email);
			if(!getmxrr ($domain,$mxhosts))
			{
				return false;
			}
			else
			{
				return true;
			}
		}
		else
		{
			return false;
		}
	} 
	// was zum henker machst du hier denn? Nach welcher bedingung wird hier die ausführung beabsichtigt
	{
    echo "Bitte gehen sie <a href=\"javascript:history.back();\">zurück</a> und geben eine g&uuml;ltige Email-Adresse ein!</font>";
    exit;
	}
}
else
{
 
Wenn die Email falsch angeben ist, sollte er diesen Text ausgeben. Wieso zu viele "Else"?

Wenn ich das richtig gesehen habe nutzt du zwei else hintereinander.
PHP:
if($_POST['Send'])

	// was zum henker machst du hier denn? Nach welcher bedingung wird hier die ausführung beabsichtigt
	{
    echo "Bitte gehen sie <a href=\"javascript:history.back();\">zurück</a> und geben eine gültige Email-Adresse ein!</font>";
    exit;
	}
}
else
{
 
Bekomme diese Fehlermeldung:

Parse error: syntax error, unexpected T_ELSE in /homepages/13/d436049093/htdocs/gtm/Test.php on line 93

Hab ein bisschen aufgeräumt, auch den einwand von Psychomentis, das "echo" gelöscht.
Code:
 <?php

$Empfaenger = "info@gtm-dienstleistungen.de";

if($_POST['Send'])
{
    if(empty($_POST['Name']) || 
       empty($_POST['Email']) || 
       empty($_POST['Telefon'])|| 
       empty($_POST['Code']) || 
       empty($_POST['Werkstatt']) || 
       empty($_POST['Kontakt']))
    {
        echo"Bitte gehen Sie <a href=\"javascript:history.back();\">zurück</a> und füllen Sie alle markierten Felder aus!";
    }
    
    function is_email($email)   
    {
        if(filter_var($email, FILTER_VALIDATE_EMAIL))
        {
            list($email,$domain) = explode('@',$email);
            if(!getmxrr ($domain,$mxhosts))
            {
                return false;
            }
            else
            {
                return true;
            }
        }
        else
        {
            return false;
        }
    } 
}
else
      {
        $Mailbetreff = "Kontakt: Franchise/Service Point";
        $Mailbetreff .= $_POST['Betreff'];

        $Trenner = md5(uniqid(time()));  
        $Mailbetreff .= $_POST['Betreff'];

        $Trenner = md5(uniqid(time()));

        $Header = "From: ".$_POST['Email'];
        $Header .= "\n";
        $Header .= "MIME-Version: 1.0";
        $Header .= "\n";
        $Header .= "Content-Type: multipart/mixed; boundary=$Trenner";
        $Header .= "\n\n";
        $Header .= "This is a multi-part message in MIME format";
        $Header .= "\n";
        $Header .= "--$Trenner";
        $Header .= "\n";
        $Header .= "Content-Type: text/plain";
        $Header .= "\n";
        $Header .= "Content-Transfer-Encoding: 8bit";
        $Header .= "\n\n";
        $Header .= "Sie haben folgende Nachricht erhalten: \n\n";

while(list($Formularfeld, $Wert) = each($_POST))
   {
         if($Formularfeld != "Send" && $Formularfeld != "Anhang")
     {
        $Header .= $Formularfeld.": ".$Wert."\n";
     }
    }

        $Header .= "\nDatum/Zeit: ";
        $Header .= date("d.m.Y H:i:s");
        $Header .= "\n";
        $Header .= "--$Trenner";
        $Header .= "\n";
        $Header .= "Content-Type: ";
        $Header .= $_FILES['Anhang']['type'];
        $Header .= "; name=";
        $Header .= $_FILES['Anhang']['name'];
        $Header .= "\n";
        $Header .= "Content-Transfer-Encoding: base64";
        $Header .= "\n";
        $Header .= "Content-Disposition: attachment; filename=";
        $Header .= $_FILES['Anhang']['name'];
        $Header .= "\n\n";
        $Header .= chunk_split(base64_encode($Dateiinhalt));
        $Header .= "\n";
        $Header .= "--$Trenner--";

        mail($Empfaenger, $Mailbetreff, "", $Header);
        echo"<p>Vielen Dank für Ihre eMail!<br> In der Regel beantworten wir ihre Anfrage innerhalb der nächsten 24 Stunden. <br>Ihr GTM Team</p>";
       }
else
         { ?>
             <table border="0" cellpadding="1" cellspacing="2">
              <form action="<?php echo$_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data" method="post">
               <h1>Kontaktformular</h1>
               <p>Bitte füllen Sie alle mit * markierten Felder aus. (Pflichtfelder)</p>
               <tr>
               <td>Ihr Name*:</td>
               td><input name="Name" size="20" type="text"></td>
               </tr>
               <tr>
               <td>Firma:</td>
               <td><input name="Firma" size="20" type="text"></td>
               </tr>
               <tr>
               <td>Strasse:</td>
               <td><input name="Strasse" size="20" type="text"></td>
               </tr>
               <tr>
               <td>PLZ / Ort:</td>
               <td><input name="Ort" size="20" type="text"></td>
               </tr>
               <tr>
               <td>Telefon*:</td>
               <td><input name="Telefon" size="20" type="text"></td>
               </tr>
               <tr>
               <td>Ihre eMail-Adresse*:</td>
               <td><input name="Email" size="20" type="text"></td>
               </tr>
               <tr>
               <tr><td align="left" valign="top">Ihre Kontaktanfrage*:</td>
               <td>
                  <input type="radio" class="Radio" name="Kontakt" value="Franchise"> Franchise<br>
                  <input type="radio" class="Radio" name="Kontakt" value="Service Point"> Service Point
               </td>
               <tr><td align="left" valign="top">Wekstatt*:</td>
               <td>
                  <input type="checkbox" class="Check" name="Werkstatt" value="vorhanden"> vorhanden<br>
                  <input type="checkbox" class="Check" name="Werkstatt" value="Nicht vorhanden"> nicht vorhanden<br>
               </td>
               <td>Ihre Nachricht:</td>
                  <td><textarea cols="25" name="Nachricht" rows="5"></textarea></td>
               </tr>
               <tr>
               <td>Anhang:</td>
               <td><input name="Anhang" size="20" type="file"></td>
               </tr>
               <td>Bitte geben sie den Sicherheitscode ein: "GTM"</td>
               <td><input name="Code" size="20" type="text"></td>
               </tr>
               <tr>
               <td align="right" colspan="2"><input name="Send" type="submit" value="Formular absenden"> <input name="Reset" type="reset" value="Formular Löschen"></td>
               </tr>
               </tr>
			  </form>
             </table>
<?php
}
?>
 
item: Eine Funktion sollte nie innerhalb eines IF stehen. Die kannst du gut und geren ans Ende von dem Script verschieben. Ich spreche da von is_email()

item: Eine Funktion schreiben ist schön. Doch diese führt sich nicht von selber auf nur weil sie da steht. Mach dich bitte mal über das Thema Funktionen schlau.

So, hab mal ein wenig formatiert für dich.
Dabie habe ich mal all das Mailformatierzeugs rausgeschmissen und mich auf das wesentliche konzentriert. Dabei fällt auf, dass du am Ende 2 Else hintereinander hast
PHP:
<?php
$Empfaenger = "info@gtm-dienstleistungen.de";

if($_POST['Send']){
    if(empty($_POST['Name']) || 
            empty($_POST['Email']) || 
            empty($_POST['Telefon'])|| 
            empty($_POST['Code']) || 
            empty($_POST['Werkstatt']) || 
            empty($_POST['Kontakt'])
     ){
        echo"Bitte gehen Sie <a href=\"javascript:history.back();\">zurück</a> und füllen Sie alle markierten Felder aus!";
     }
}else{
    //TODO: Mailheader zusammensetzn
    echo"<p>Vielen Dank für Ihre eMail!<br> In der Regel beantworten wir ihre Anfrage innerhalb der nächsten 24 Stunden. <br>Ihr GTM Team</p>";
}else{
    //TODO: Mail ausgeben
}

function is_email($email){
    if(filter_var($email, FILTER_VALIDATE_EMAIL)){
        list($email,$domain) = explode('@',$email);
        if(!getmxrr ($domain,$mxhosts)){
            return false;
        }else{
            return true;
        }
    }else{
        return false;
    }
} 
?>
Dein jetztiger Programmablauf ist:
1) Prüfen ob Daten gesendet werden. Wenn ja, prüfst du auf Vollständigkeit (nicht auf Validierung des Empfängers!).
2) Falls nichts gesendet wurde, erstellst du einen Mailheader.
3) In einem Weiteren else (das es nicht geben darf) erstellst du auch noch der Rest des Mails.

Ergo:
- Also, du sendest nur ein Mail wenn KEIN Formular gesendet wurde.
- Du prüfst NIE die Emailadresse
- Du hast ein else zuviel

Mein Vorschlag ist diese Struktur
PHP:
<?php
$Empfaenger = "info@gtm-dienstleistungen.de";

//Prüfen ob gesendet
if($_POST['Send']){
    //Auf Vollständigkeit prüfen
    if(empty($_POST['Name']) || 
            empty($_POST['Email']) || 
            empty($_POST['Telefon'])|| 
            empty($_POST['Code']) || 
            empty($_POST['Werkstatt']) || 
            empty($_POST['Kontakt'])
     ){
        //Email Validieren
        if(!isValidEmail($_POST['Email'])){
            //Mail ausgeben
            //TODO: Mailheader zusammensetzn
            //TODO: Mail ausgeben
            echo "<p>Vielen Dank für Ihre eMail!<br> In der Regel beantworten wir ihre Anfrage innerhalb der nächsten 24 Stunden. <br>Ihr GTM Team</p>";
        }else{
            //Fehlermeldung Emailvalidierung
            echo "Emailadresse ist ungültig";
        }
     }else{
         //Fehlermeldung unvollständiges Formular
         echo "Bitte gehen Sie <a href=\"javascript:history.back();\">zurück</a> und füllen Sie alle markierten Felder aus!";
     }
}

/**
 * isValidEmail
 * Prüft ob eine Emailadresse gültig ist mittels filter_var() und getmxrr()
 * @param String    $email
 * @return boolean
 */
function isValidEmail($email){
    //PHP-Filter anwenden
    $email = filter_var($email, FILTER_VALIDATE_EMAIL);
    if($email === false) return false;
    //Und noch die Domain testen
    list($name,$domain) = explode('@',$email);
    return (getmxrr ($domain,$mxhosts));
}
?>
 
@Yaslaw ist es wirklich gewollt ein leeres Formular per E-Mail zu versenden? :eek:

PHP:
<?php
$Empfaenger = "info@gtm-dienstleistungen.de";
 
//Prüfen ob gesendet
if($_POST['Send']){
    //Auf Vollständigkeit prüfen
    if(empty($_POST['Name']) || 
            empty($_POST['Email']) || 
            empty($_POST['Telefon'])|| 
            empty($_POST['Code']) || 
            empty($_POST['Werkstatt']) || 
            empty($_POST['Kontakt'])
     ){
        # Formular ist leer und wird zur ausgabe weitergegeben?

        //Email Validieren
        if(!isValidEmail($_POST['Email'])){

        # E-Mail ist falsch und wird weiterverwendet?

            //Mail ausgeben
            //TODO: Mailheader zusammensetzn
            //TODO: Mail ausgeben
            echo "<p>Vielen Dank für Ihre eMail!<br> In der Regel beantworten wir ihre Anfrage innerhalb der nächsten 24 Stunden. <br>Ihr GTM Team</p>";
        }else{

        # E-Mail ist korrekt und es wird ein Fehler ausgegeben?

            //Fehlermeldung Emailvalidierung
            echo "Emailadresse ist ungültig";
        }
     }else{

        # Formular ist vollständig ausgefüllt, jedoch wird ein Fehler mit gegenteiliger Mitteilung angezeigt.

         //Fehlermeldung unvollständiges Formular
         echo "Bitte gehen Sie <a href=\"javascript:history.back();\">zurück</a> und füllen Sie alle markierten Felder aus!";
     }
}
 
/**
 * isValidEmail
 * Prüft ob eine Emailadresse gültig ist mittels filter_var() und getmxrr()
 * @param String    $email
 * @return boolean
 */
function isValidEmail($email){
    //PHP-Filter anwenden
    $email = filter_var($email, FILTER_VALIDATE_EMAIL);
    if($email === false) return false;
    //Und noch die Domain testen
    list($name,$domain) = explode('@',$email);
    return (getmxrr ($domain,$mxhosts));
}
?>
Müsste es nicht eher so aussehen: :)
PHP:
<?php
$Empfaenger = "info@gtm-dienstleistungen.de";
 
//Prüfen ob gesendet
if($_POST['Send']){
    //Auf Vollständigkeit prüfen
    if(!empty($_POST['Name']) || 
       !empty($_POST['Email']) || 
       !empty($_POST['Telefon'])|| 
       !empty($_POST['Code']) || 
       !empty($_POST['Werkstatt']) || 
       !empty($_POST['Kontakt'])
     ){
        //Email Validieren
        if(isValidEmail($_POST['Email'])){
            //Mail ausgeben
            //TODO: Mailheader zusammensetzn
            //TODO: Mail ausgeben
            echo "<p>Vielen Dank für Ihre eMail!<br> In der Regel beantworten wir ihre Anfrage innerhalb der nächsten 24 Stunden. <br>Ihr GTM Team</p>";
        }else{
            //Fehlermeldung Emailvalidierung
            echo "Emailadresse ist ungültig";
        }
     }else{
         //Fehlermeldung unvollständiges Formular
         echo "Bitte gehen Sie <a href=\"javascript:history.back();\">zurück</a> und füllen Sie alle markierten Felder aus!";
     }
}
 
/**
 * isValidEmail
 * Prüft ob eine Emailadresse gültig ist mittels filter_var() und getmxrr()
 * @param String    $email
 * @return boolean
 */
function isValidEmail($email){
    //PHP-Filter anwenden
    $email = filter_var($email, FILTER_VALIDATE_EMAIL);
    if($email === false) return false;
    //Und noch die Domain testen
    list($name,$domain) = explode('@',$email);
    return (getmxrr ($domain,$mxhosts));
}
?>

Oder bin ich vom Gedanken her falsch unterwegs?
 

Neue Beiträge

Zurück