English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

PHP Grundlagenanleitung

PHP Fortgeschrittene Anleitung

PHP & MySQL

PHP Referenzhandbuch

PHP-Formularvalidierung

In diesem Tutorial lernen Sie, wie Sie mit PHP-Filtern Formulardaten bereinigen und validieren.

Bereinigung und Validierung von Formulardaten

Wie Sie im letzten Tutorial sehen können, ist der Prozess, die übermittelten Formulardaten zu erfassen und anzuzeigen, sehr einfach. In diesem Tutorial werden Sie lernen, wie Sie auf Ihrer Website ein einfaches Kontaktformular implementieren, das es Benutzern ermöglicht, Kommentare und Feedback per E-Mail zu senden. Wir werden das gleichePHP mail() Funktionum E-Mails zu senden.

Wir werden auch einige grundlegende Sicherheitsfunktionen implementieren, wie z.B. das Bereinigen und Validieren des Benutzerinputs, um sicherzustellen, dass Benutzer keine schädlichen Daten eingeben können, die die Sicherheit der Website gefährden oder die Anwendung beschädigen könnten.

Hier ist unser Multi-Purpose PHP-Skript, das die folgenden Aktionen ausführt:

  • Es wird den Benutzern gevorgeschlagen, ihre Kommentare zum Website einzugeben.

  • Das gleiche Skript zeigt das Kontaktformular an und verarbeitet die übermittelten Formulardaten.

  • Das Skript bereinigt und validiert die Benutzerinput. Wenn ein erforderliches Feld (gekennzeichnet mit*oder aufgrund falscher Eingaben die Validierung fehlschlägt, wird das Formular neu angezeigt und eine Fehlermeldung für den entsprechenden Formularbereich angezeigt.

  • Das Skript merkt sich die von den Benutzern ausgefüllten Felder und füllt diese Felder vor, wenn das Formular aufgrund von Validierungsfehlern neu angezeigt wird.

  • Wenn die übermittelten Daten akzeptiert werden und alles gut geht, wird eine E-Mail an den Website-Administrator gesendet und eine Erfolgsmeldung dem Benutzer angezeigt.

Geben Sie den folgenden Code in die Datei "contact.php" ein und speichern Sie ihn im Stammverzeichnis des Projekts ab:

<?php
//Funktion zum Filtern der Benutzerinput
function filterName($field){
    //Benutzername bereinigen
    $field = filter_var(trim($field), FILTER_SANITIZE_STRING);
    
    //Überprüfen Sie den Benutzernamen
    if(filter_var($field, FILTER_VALIDATE_REGEXP, array("options"=>array("regexp"=>"/^[a-zA-Z\s]+$/")))){
        return $field;
    } else{
        return FALSE;
    }
}    
function filterEmail($field){
    //E-Mail-Adresse bereinigen
    $field = filter_var(trim($field), FILTER_SANITIZE_EMAIL);
    
    // Überprüfen Sie die E-Mail-Adresse
    if(filter_var($field, FILTER_VALIDATE_EMAIL)){
        return $field;
    } else{
        return FALSE;
    }
}
function filterString($field){
    // Klären Sie den String
    $field = filter_var(trim($field), FILTER_SANITIZE_STRING);
    if(!empty($field)){
        return $field;
    } else{
        return FALSE;
    }
}
 
//Definieren Sie Variablen und initialisieren Sie sie mit leeren Werten
$nameErr = $emailErr = $messageErr = "";
$name = $email = $subject = $message = "";
 
//Verarbeiten Sie die Formulardaten beim Absenden des Formulars
if($_SERVER["REQUEST_METHOD"] == "POST"){
 
    // Überprüfen Sie den Benutzernamen
    if(empty($_POST["name"])){
        $nameErr = "Please enter your name.";
    } else{
        $name = filterName($_POST["name"]);
        if($name == FALSE){
            $nameErr = "Bitte geben Sie einen gültigen Namen ein.";
        }
    }
    
    // Überprüfen Sie die E-Mail-Adresse
    if(empty($_POST["email"])){
        $emailErr = "请输入您的电子邮件地址。";     
    } else{
        $email = filterEmail($_POST["email"]);
        if($email == FALSE){
            $emailErr = "Bitte geben Sie eine gültige E-Mail-Adresse ein.";
        }
    }
    
    // Validieren Sie die Betreffzeile der Nachricht
    if(empty($_POST["subject"])){
        $subject = "";
    } else{
        $subject = filterString($_POST["subject"]);
    }
    
    // Überprüfen Sie die Benutzerkommentare
    if(empty($_POST["message"])){
        $messageErr = "Please enter your comment.";     
    } else{
        $message = filterString($_POST["message"]);
        if($message == FALSE){
            $messageErr = "Bitte geben Sie einen gültigen Kommentar ein.";
        }
    }
    
    //Überprüfen Sie vor dem Senden einer E-Mail mögliche Eingabefehler
    if(empty($nameErr) && empty($emailErr) && empty($messageErr)){
        // Recipient email address
        $to = '[email protected]';
        
        // Create email headers
        $headers = 'From: '. $email . "\r\n" .
        'Reply-To: '. $email . "\r\n" .
        'X-Mailer: PHP/' . phpversion();
        
        // Sending email
        if(mail($to, $subject, $message, $headers)){
            echo '<p class="success">您的留言已成功发送!</p>';
        } else{
            echo '<p class="error">无法发送电子邮件。请再试一次!</p>';
        }
    }
}
?>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8>
    <title>Contact Form</title>
    <style type="text/css">
        .error{ color: red; }
        .success{ color: green; }
    </style>
</head>
    <h2>联系我们</h2>
    <p>请填好这张表格并寄给我们</p>
    <form action="contact.php" method="post">
        <p>
            <label for="inputName">Name:<sup>*</sup></label>
            <input type="text" name="name" id="inputName" value="<?php echo $name; ?>">
            <span class="error"><?php echo $nameErr; ?>/span>
        </p>
        <p>
            <label for="inputEmail">Email:<sup>*</sup></label>
            <input type="text" name="email" id="inputEmail" value="<?php echo $email; ?>">
            <span class="error"><?php echo $emailErr; ?>/span>
        </p>
        <p>
            <label for="inputSubject">Betreff:</label>
            <input type="text" name="subject" id="inputSubject" value="<?php echo $subject; ?>">
        </p>
        <p>
            <label for="inputComment">Nachricht:<sup>*</sup></label>
            <textarea name="message" id="inputComment" rows="5" cols="30><?php echo $message; ?><//textarea>
            <span class="error"><?php echo $messageErr; ?><//span>
        </p>
        <input type="submit" value="Senden">
        <input type="reset" value="Reset">
    </form>
</html>

Verwendung des Codes

Vielleicht denken Sie über den gesamten Inhalt dieses Codes nach. Na gut, lassen Sie uns direkt hinein gehen.

  • Die filterName() -Funktion überprüft, ob der Eingabewert ein Name ist. Gültige Namen dürfen nur Buchstabenzeichen (a-z, A-Z).

  • Die filterEmail() -Funktion validiert Eingabewerte als E-Mail-Adresse.

  • Die filterString() -Funktion bereinigt Eingabewerte durch Entfernen von HTML-Tags und Sonderzeichen. Sie validiert keine Eingabewerte.

  • Marken<form>mit dem Attribut action="contact.php" den gleichen contact.php-Datei angeben, um das Formular anzuzeigen und die Formulardaten zu verarbeiten.

  • <input>und<textarea>im Wert-Attribut enthaltenen PHP-Code, z.B. <?php echo $name; ?> bei Formularfehlern wird die voreingefüllte Wert wieder angezeigt.

  • .error-Klasse enthaltenen PHP-Code, z.B. <span class="error"><?php echo $nameErr; ?><//>Anzeigen der Fehlermeldung für das entsprechende Feld.

 Für mehr Informationen über das Bereinigen und Validieren von Filtern lesen Sie bittePHP-FilterReferenz.

Hinweis:Sie müssen den E-Mail-Server auf Ihrem Computer einrichten, damit die PHP mail() -Funktion ordnungsgemäß funktioniert. Wenn Sie nur die Formularvalidierung ausführen möchten, können Sie den Teil der E-Mail durch eigenes benutzerdefiniertes Code ersetzen.