Ensuite je teste l’envoi du formulaire, et dans celui-ci le champ ‘name’, en testant s’il est rempli et si c’est bien un mot.
if ($_SERVER["REQUEST_METHOD"] == "POST") {//je teste la methode d'envoi if (empty($_POST["name"])) {//si l'input name est vide $nameError = "Name is required";//message d'erreur } else { $name = test_input($_POST["name"]);//sinon on assigne l'input récupéré dans une variable
// check if name only contains letters and whitespace if (!preg_match("/^[a-zA-Z ]*$/",$name)) {//si c'est pas un mot $nameError = "Only letters and white space allowed"; //erreur }else{//ici dernière condition optionnelle pour montrer $name que si ce n'est pas un nombre echo $name; } } } //fonction pour sécuriser les données function test_input($data) { $data = trim($data); $data = stripslashes($data); $data = htmlspecialchars($data); return $data; }
J’ai commenté le code pour explication. Si on insère des chiffres:
si on valide sans rien mettre:
et si on insère un mot on l’affiche juste au dessus..
Le formulaire au complet
Et voici le formulaire actualisé avec l’affichage des messages d’erreurs:
<form method="POST" action="test.php"> <label for="name">Name</label> <input name="name" type="text" value="<?php echo !empty($name)? $name : '';?>"> <?php if (!empty($nameError)): ?><!--on vérifie sil y a une erreur--> <p> <span class="red"><?php echo $nameError;?></span></p><!--dans ce cas on l'affiche--> <?php endif; ?> <p><input type="submit" name="submit" value="valider"></p> </form>