PHP - przykład walidacji

Wymagane pole sprawdzi, czy pole jest wypełnione w odpowiedni sposób. W większości przypadków będziemy używać rozszerzenia* symbol wymaganego pola.

Co to jest walidacja?

Walidacja oznacza sprawdzenie danych wprowadzonych przez użytkownika. W PHP dostępne są dwa rodzaje walidacji. Są następujące -

  • Client-Side Validation - Walidacja jest wykonywana w przeglądarkach internetowych komputera klienta.

  • Server Side Validation - Po przesłaniu przez dane, dane zostały wysłane na serwer i przeprowadzają testy poprawności na serwerze.

Niektóre z reguł walidacji dla pola

Pole Zasady walidacji
Nazwa Powinny być wymagane litery i spacje
E-mail Powinien być wymagany @ i .
Stronie internetowej Powinien wymagać prawidłowego adresu URL
Radio Musi być możliwy do wybrania co najmniej raz
Pole wyboru Musi być sprawdzany przynajmniej raz
Rozwijane menu Musi być możliwy do wybrania co najmniej raz

Prawidłowy adres URL

Poniższy kod przedstawia walidację adresu URL

$website = input($_POST["site"]);

if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website)) { $websiteErr = "Invalid URL"; 
}

Powyższa składnia zweryfikuje, czy podany adres URL jest prawidłowy, czy nie. Powinno zezwalać na niektóre słowa kluczowe, takie jak https, ftp, www, az, 0-9 itd.

Ważny email

Poniższy kod przedstawia weryfikację adresu e-mail

$email = input($_POST["email"]);

if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { $emailErr = "Invalid format and please re-enter valid email"; 
}

Powyższa składnia sprawdzi, czy podany adres e-mail jest poprawnie sformułowany, czy nie. Jeśli nie, to pokaże komunikat o błędzie.

Przykład

Poniższy przykład przedstawia formularz z wymaganą walidacją pola

<html>
   
   <head>
      <style>
         .error {color: #FF0000;}
      </style>
   </head>
   
   <body>
      <?php
         // define variables and set to empty values
         $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"]);
               
               // check if e-mail address is well-formed
               if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { $emailErr = "Invalid email format"; 
               }
            }
            
            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"]);
            }
         }
         
         function test_input($data) { $data = trim($data); $data = stripslashes($data); $data = htmlspecialchars($data); return $data;
         }
      ?>
     
      <h2>Absolute classes registration</h2>
     
      <p><span class = "error">* required field.</span></p>
     
      <form method = "post" action = "<?php 
         echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> <table> <tr> <td>Name:</td> <td><input type = "text" name = "name"> <span class = "error">* <?php echo $nameErr;?></span>
               </td>
            </tr>
           
            <tr>
               <td>E-mail: </td>
               <td><input type = "text" name = "email">
                  <span class = "error">* <?php echo $emailErr;?></span> </td> </tr> <tr> <td>Time:</td> <td> <input type = "text" name = "website"> <span class = "error"><?php echo $websiteErr;?></span>
               </td>
            </tr>
            
            <tr>
               <td>Classes:</td>
               <td> <textarea name = "comment" rows = "5" cols = "40"></textarea></td>
            </tr>
            
            <tr>
               <td>Gender:</td>
               <td>
                  <input type = "radio" name = "gender" value = "female">Female
                  <input type = "radio" name = "gender" value = "male">Male
                  <span class = "error">* <?php echo $genderErr;?></span> </td> </tr> <td> <input type = "submit" name = "submit" value = "Submit"> </td> </table> </form> <?php echo "<h2>Your given values are as:</h2>"; echo $name;
         echo "<br>";
         
         echo $email; echo "<br>"; echo $website;
         echo "<br>";
         
         echo $comment; echo "<br>"; echo $gender;
      ?>
   
   </body>
</html>

To da następujący wynik -