PHP Φόρμας Ελέγχου - Υποχρεωτικά πεδία

Αυτό το κεφάλαιο παρουσιάζει πώς να δημιουργήσουμε πεδία υποχρεωτικής εισόδου και να δημιουργήσουμε τα μηνύματα σφαλμάτων που χρειάζονται.

PHP - Πεδία εισόδου

Από τους κανονισμούς ελέγχου στο προηγούμενο κεφάλαιο, βλέπουμε ότι τα πεδία "Όνομα", "Email" και "Γένος" είναι απαραίτητα. Αυτά τα πεδία δεν μπορούν να είναι κενά και πρέπει να συμπληρωθούν στο HTML φόρμα.

Πεδίο Κανονισμοί ελέγχου
Όνομα Απαιτείται. Πρέπει να περιέχει γράμματα και κενά.
Email Απαιτείται. Πρέπει να περιέχει έγκυρη διεύθυνση email (συμπεριλαμβανομένων των @ και .).
Ιστότοπος Διαθέσιμο. Αν συμπληρωθεί, πρέπει να περιέχει έγκυρη URL.
Σχόλιο Διαθέσιμο. Πολλαπλή γραμμή πεδίου εισόδου (κουτί κειμένου).
Γένος Απαιτείται. Πρέπει να επιλεγεί μια επιλογή.

Στο προηγούμενο κεφάλαιο, όλα τα πεδία εισόδου ήταν διαθέσιμα.

Στην παρακάτω κώδικα προσθέσαμε μερικές νέες μεταβλητές: $nameErr, $emailErr, $genderErr και $websiteErr. Αυτές οι μεταβλητές σφαλμάτων θα αποθηκεύσουν τα μηνύματα σφαλμάτων των αιτηθέντων πεδίων. Προσθέσαμε επίσης μια πρόταση if else για κάθε μεταβλητή $_POST. Αυτή η πρόταση ελέγχει αν η μεταβλητή $_POST είναι κενή (μέσω της συνάρτησης PHP empty()). Αν είναι κενή, το μήνυμα σφάλματος αποθηκεύεται σε διαφορετικές μεταβλητές σφαλμάτων. Αν δεν είναι κενή, τα δεδομένα εισόδου του χρήστη αποστέλλονται μέσω της συνάρτησης test_input():

<?php}}
// Δια定ισμός μεταβλητών και ρύθμιση σε κενά τιμή
$nameErr = $emailErr = $genderErr = $websiteErr = "";
$name = $email = $gender = $comment = $website = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
  if (empty($_POST["name"])) {
    $nameErr = "Name is required";
  } else {
    $name = test_input($_POST["name"]);
  }
  if (empty($_POST["email"])) {
    $emailErr = "Email is required";
  } else {
    $email = test_input($_POST["email"]);
  }
  if (empty($_POST["website"])) {
    $website = "";
  } else {
    $website = test_input($_POST["website"]);
  }
  if (empty($_POST["comment"])) {
    $comment = "";
  } else {
    $comment = test_input($_POST["comment"]);
  }
  if (empty($_POST["gender"])) {
    $genderErr = "Gender is required";
  } else {
    $gender = test_input($_POST["gender"]);
  }
}
?>

PHP - Εμφάνιση μηνύσεων σφαλμάτων

Σε ένα HTML έξοχο, προσθέτουμε ένα κομμάτι κώδικα μετά από κάθε πεδίο που ζητείται. Αν χρειαστεί, δημιουργούμε κατάλληλες μηνύσεις σφαλμάτων (αν ο χρήστης προσπαθεί να υποβάλει τη φόρμα χωρίς να συμπληρώσει υποχρεωτικά πεδία):

Παράδειγμα

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
Όνομα: <input type="text" name="name">
<span class="error">* <?php echo $nameErr;?></span>
<br><br>
E-mail:
<input type="text" name="email">
<span class="error">* <?php echo $emailErr;?></span>
<br><br>
Website:
<input type="text" name="website">
<span class="error"><?php echo $websiteErr;?></span>
<br><br>
<label>Comment: <textarea name="comment" rows="5" cols="40"></textarea>
<br><br>
Gender:
<input type="radio" name="gender" value="female">Female
<input type="radio" name="gender" value="male">Male
<span class="error">* <?php echo $genderErr;?></span>
<br><br>
<input type="submit" name="submit" value="Submit"> 
</form>

运行实例

接下来是验证输入数据,即“Name 字段是否只包含字母和空格?”,以及“E-mail 字段是否包含有效的电子邮件地址语法?”,并且如果填写了 Website 字段,“这个字段是否包含了有效的 URL?”。