2016-04-15 11 views
0

Ich brauche Hilfe bei der Erweiterung meines PHP-Skripts. Ich benötige Pflichtfelder und eine Validierung für ein E-Mail-Feld innerhalb eines Anmeldeformulars.PHP-Formular mit Pflichtfeldern und Validierung erweitern

Das ist mein Code, ich habe versucht, verschiedene if- und echo-Codes zu verwenden, aber nichts funktioniert darin.

<?php 

$email = $_POST['email']; 
$from = $email; 

$to = "[email protected]"; 
$subject = "SIGN UP"; 

$emailbody = ""; 
$emailbody .= "Email: " . $email . "\n"; 

$header = ""; 
$header .= "From:" . $from . " \n"; 
$header .= "Content-Type:text/plain;charset=utf-8"; 

// Sending message 
$success = mail($to, $subject, $emailbody, $header); 

if ($success){ 
print "<meta http-equiv=\"refresh\" content=\"0;URL=confirmation_signup.html\">"; 
} 
else{ 
print "<meta http-equiv=\"refresh\" content=\"0;URL=error.html\">"; 
} 
?> 

Der Code funktioniert, E-Mails empfangen geliefert, aber die Form nicht erfolgreich sein, wenn die Felder nicht ausgefüllt werden. Vielen Dank im Voraus.

+0

Hilft meine Antwort? – Hassaan

Antwort

0

scheint es, dass E-Mail das einzige, was Sie von der POST zu sammeln, so überprüfen Sie nur, wenn das ist empty erste und validate it:

<?php 

if(!empty($_POST['email']) && (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) === false)){ 

    $email = $_POST['email']; 
    $from = $email; 

    $to = "[email protected]"; 
    $subject = "SIGN UP"; 

    $emailbody = ""; 
    $emailbody .= "Email: " . $email . "\n"; 

    $header = ""; 
    $header .= "From:" . $from . " \n"; 
    $header .= "Content-Type:text/plain;charset=utf-8"; 

    // Sending message 
    $success = mail($to, $subject, $emailbody, $header); 

    if ($success){ 
    print "<meta http-equiv=\"refresh\" content=\"0;URL=confirmation_signup.html\">"; 
    } 
    else{ 
    print "<meta http-equiv=\"refresh\" content=\"0;URL=error.html\">"; 
    } 
} 
else echo "email required"; 
?> 

Und bevor es den Server trifft, können Sie Ihre Benutzer helfen indem Sie zuerst eine Client-seitige Validierung durchführen, um die input is an email und is required sicherzustellen.

0

Sie können überprüfen, E-Mail-Feld ist nicht leer und dann können Sie filter_var verwenden, um die bereitgestellten E-Mails zu überprüfen.

Hier ist ein Beispiel

<?php 
if(!empty($_POST['email']) && (!filter_var($email, FILTER_VALIDATE_EMAIL) === false)) 
{ 
    $email = $_POST['email']; 
    $from = $email; 

    $to = "[email protected]"; 
    $subject = "SIGN UP"; 

    $emailbody = ""; 
    $emailbody .= "Email: " . $email . "\n"; 

    $header = ""; 
    $header .= "From:" . $from . " \n"; 
    $header .= "Content-Type:text/plain;charset=utf-8"; 

    // Sending message 
    $success = mail($to, $subject, $emailbody, $header); 

    if ($success) 
    { 
     print "<meta http-equiv=\"refresh\" content=\"0;URL=confirmation_signup.html\">"; 
    } 
    else 
    { 
    print "<meta http-equiv=\"refresh\" content=\"0;URL=error.html\">"; 
    } 
} 
else print "<meta http-equiv=\"refresh\" content=\"0;URL=error.html\">"; 
?> 
+0

Das hat für mich funktioniert! Vielen Dank! Aber ich habe ein anderes Problem - vielleicht hast du auch eine Lösung ... –

+0

@ DietrichMöller Was ist das? – Hassaan

0

das Problem behoben ist, aber ein anderes Problem erschien. Das HTML-Formular sendet die E-Mail nicht korrekt. Ich habe sechs Mailadressen ausprobiert. Wenn jemand das Formular abschickt, werden die Mails manchmal an die eine gesendet - manchmal an die andere - manchmal an keine Adresse. Ich habe gehört, dass ich den regulären mail() -Befehl nicht verwende. Kann mir jemand davon erzählen?

<?php 
if(!empty($_POST['email']) && !empty($_POST['name']) && !empty($_POST['message']) && (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) === false)){ 

$name = $_POST['name']; 
$email = $_POST['email']; 
$message = $_POST['message']; 
$from = $email; 
$to = "[email protected]"; 
$subject = "SUPPORT"; 

$emailbody = ""; 
$emailbody .= "Full name: " . $name . "\n"; 
$emailbody .= "Email: " . $email . "\n"; 
$emailbody .= "Message: " . $message . "\n"; 

$header = ""; 
$header .= "From:" . $from . " \n"; 
$header .= "Content-Type:text/plain;charset=utf-8"; 

$success = mail($to, $subject, $emailbody, $header); 

if ($success){ 
print "<meta http-equiv=\"refresh\" content=\"0;URL=de/confirmation.html\">"; 
} 
else{ 
print "<meta http-equiv=\"refresh\" content=\"0;URL=de/error.html\">"; 
} 
} 
else print "<meta http-equiv=\"refresh\" content=\"0;URL=de/error.html\">"; 
?>