Bonjour à tous, ceci est mon premier tutoriel pour Kommunauty. Nous apprendrons dans celui-ci à gérer les formulaires internet qui sont très souvent la source de failles de sécurités pour un site. De plus, nous verrons toutes les vérifications possibles et les éventuelles failles qui pourraient nuire au bon fonctionnement.
Nous n'apprendrons non pas à créer un formulaire, mais plutôt à gérer les informations qui seront postées et à la fois réceptionnées avec du PHP.
Je vous met ci-dessous l'exemple d'un formulaire avec deux champs de texte (Courriel et Pseudo). Nous utiliserons ce formulaire durant toute la continuité de ce tutoriel pour les exemples et les démonstrations.
Contenu de notre page index.php
<form method="post" action="envoi.php">
<input type="text" name="courriel" />
<input type="text" name="pseudo" />
<input type="submit" name="envoyer" />
</form>
Vous avez vu que notre formulaire ci-dessus était très basique. Il transmettra les informations entrées vers la page envoi.php en utilisant la méthode POST.
Nous allons premièrement vérifier que le formulaire n'a pas été soumis à perte. C'est à dire que nous vérifierons si les champs de notre formulaire ne sont pas vide. Nous verrons deux méthodes différentes.
Voici la première méthode que je vous propose d'essayer :
Contenu de notre page envoi.php
<?php
if($_POST["courriel"] == "" || $_POST["pseudo"] == "") {
echo "Vous devez compléter tous les champs du formulaire";
}
?>
Et oui, ce petit bout de code permet de vérifier que les deux champs de notre formulaire ne sont pas vide. Seulement, cette méthode n'est pas la meilleure selon moi puisqu'il suffirait de mettre un simple espace dans l'un des champs pour dire qu'il est complété.
Nous utiliserons alors alors cette deuxième méthode plus simple et fonctionnelle :
Contenu de notre page envoi.php
<?php
if(empty($_POST["courriel"]) || empty($_POST["pseudo"])) {
echo "Vous devez compléter tous les champs du formulaire !";
}
?>
Vous savez maintenant comment vérifier si un champ est complété ou nom.
Et oui, je voulais aborder cette partie dans mon tutoriel puisque beaucoup de sites ne pensent pas à faire cette vérification qui est quand même assez importante selon moi.
Nous allons vérifier que les informations transmises proviennent bien d'un formulaire de notre site et non pas d'un source externe. Je m'explique :
Nous pourrions très bien créer un formulaire de cette façon :
<form method="post" action="http://www.site.com/envoi.php" target="_blank">
<input type="text" name="courriel" />
<input type="text" name="pseudo" />
<input type="submit" value="post" />
</form>
Je vous laisse faire la comparaison de ce formulaire par rapport au premier qui est situé au début du tutoriel. J'ai en effet rajouté un target="_blank" et en page de destination, j'ai mis le lien relatif d'un site distant.
En gros, l'on peut refaire le formulaire à notre sauce et transférer les données vers un autre site ayant les mêmes valeurs que notre formulaire. Vous me direz oui, mais quel est le problème ?
Alors, imaginons que nous ayons ceci dans notre formulaire, une case à cocher ayant comme valeur (si elle est cochée) : oui.
<input type="checkbox" name="choix" value="oui" />
Nous pourrions très bien (au lieu d'une case à cocher) mettre un champ de texte portant le même nom, mais en changeant la valeur :
<input type="text" name="choix" value="blabla" />
Vous voyez l'astuce ? Maintenant, nous allons voir comment la dévier. Il existe une solution toute simple : Il nous suffit de faire une vérification pour s'assurer que la page internet précédente visitée par l'internaute était bien celle ou se trouvait notre formulaire.
<?php
if($_SERVER["HTTP_REFERER"] !== 'http://www.site.com/index.php") {
echo "Le formulaire est soumis depuis une source externe !";
}
?>
Mais vous l'aurez compris, il suffit simplement de remplacer www.site.com/index.php par l'adresse internet sur laquelle se trouve votre formulaire. Rien de bien compliqué jusqu'à maintenant !
Nous savons maintenant vérifier qu'un champ n'est pas vide et nous savons également comment contrer la soumission d'une source externe. Notre code ci-dessous vérifiera que les données reçues par le formulaire contiennent bien un "@" et un "." d'une adresse de courriel électronique.
Allez, fini le Blabla ! On veut du code, du codeeeee !
<?php
if(!filter_var($_POST["courriel"], FILTER_VALIDATE_EMAIL)) {
echo "Votre adresse de courriel est incorrecte !";
}
?>
Vous voyez, ce n'est pas si difficile que ça en fin de compte, ça ne prend qu'une simple ligne de code et c'est totalement fonctionnel.
Et maintenant (Pendant qu'on y est) nous allons voir comment vérifier que les données reçues ne contiennent pas de caractères spéciaux ! Là, j'aurais un peu de mal à vous expliquer le code à vrai dire. Non, ce n'est pas chinois, croyez moi !
<?php
if(!preg_match('/^[a-zA-Z0-9-_]+$/', $_POST["pseudo"])) {
echo "Votre pseudo contient des caractères spéciaux !";
}
?>
<?php
// On vérifie que le formulaire n'a pas été soumis via une source externe
if($_SERVER["HTTP_REFERER"] !== "http://www.site.com/index.php") {
echo "Le formulaire est soumis depuis une source externe !";
}
// On vérifie que tous les champs ont été complétés
else if(empty($_POST["courriel"]) || empty($_POST["pseudo"])) {
echo "Vous devez compléter tous les champs du formulaire !";
}
// On vérifie que l'adresse de courriel soit valide
else if(!filter_var($_POST["courriel"], FILTER_VALIDATE_EMAIL)) {
echo "Votre adresse de courriel est incorrecte !";
}
// On vérifie que le Pseudo ne contient pas de caractères spéciaux
else if(!preg_match('/^[a-zA-Z0-9-_]+$/', $_POST["pseudo"])) {
echo "Votre pseudo contient des caractères spéciaux !";
}
// Sinon, on indique que tout est parfait
else {
echo "Félicitations, tout est bon !";
}
?>
Clavier Creative Prodikeys DM
Présentation Luffy59
Salutation à la communauté
Cherche équipe pour site web
impossible d'utiliser mon ordi, un virus ?
Comment devenir un Anonymous
Economiser 90% d'encre
Utiliser LOIC sur Windows
Google : Nouvelles règles de non-confidentialité
Debrider des vidéos en streaming avec Cacaoweb
Google : Nouvelles règles de non-confidentialité
Les projo dans les lycées, grosse blague.
Facebook a des comptes à rendre
Mise au point sur OpFacebook
Tu es + ou - G33k ?
Réaliser une transition "Stroke Effect" avec After Effects
Javascript : De la neige sur vos sites web !
Inkscape : Présentation
Contourner la censure sur internet pour les nuls
Gestion de formulaires en phpArticle lu 4789 fois.
Kommunauty © Tous droits réservés
Contact /
Charte & Mentions légales /
Statistiques /
Hebergement gratuit /
Aide B2i /
Newsletter /
Dons
Ajoute un commentaire !