Accueil » Articles » Développez des sites web dynamiques avec PhP et MySQL [Tuto en cours]

Développez des sites web dynamiques avec PhP et MySQL [Tuto en cours]

LES FORMULAIRES EN PHP

Les formulaires sont utilisés pour interagir avec vos visiteurs. Grâce aux formulaires, vos visiteurs pourront en effet ajouter des informations sur votre site ou vous envoyer des messages.

On utilise par exemple les formulaires pour créer les zones de commentaires d’un blog ou d’un site e-commerce ou encore dans les pages de contact. Les formulaires sont encore à la base des forums, entre autres.

Les formulaires en HTML

Si vous avez bien suivi mon cours concernant le langage HTML avant celui-ci, vous devriez vous rappeler que nous avions déjà parlé des formulaires et nous en avions même créé un.

En fait, nous n’avions créé que la partie de saisie et d’envoi des données. Il nous manquait la connaissance du PhP pour traiter ces mêmes données et pouvoir véritablement interagir avec nos visiteurs.

Nous allons donc réutiliser ce que nous avons appris afin de créer la base de notre formulaire.

Nous allons commencer par créer un formulaire très simple sur une page formulaire.php qui demandera seulement son nom à l’utilisateur. Nous utiliserons ensuite ce nom afin d’afficher un message de bienvenue personnalisé.

Si vous vous rappelez bien, en HTML, on utilise l’élément form avec ses deux attributs method et action afin de définir notre formulaire.

Généralement, on donne la valeur POST à l’attribut method. L’attribut action sert lui à définir la page appelée par le formulaire. Il nous faudra créer cette page qu’on va appeler très simplement target.php.

La page target.php va recevoir les données envoyées par l’utilisateur et effectuer les opérations de traitement de ces données, notamment la vérification de l’intégrité de celles-ci.

Nous allons utiliser un élément input de type text pour la saisie du nom de vos visiteurs et un élément input de type submit pour l’envoi des données.

On n’oubliera pas l’élément label afin d’indiquer au visiteur ce qu’il doit remplir ni de lier le label à l’input grâce aux attribut for (pour le label) et id (pour l’input).

Voilà donc à quoi ressemble notre page formulaire.php pour le moment :

ON commence par créer la partie HTML de notre formulaire

Input visiteur formulaire

Le traitement des données en PhP

Lorsque l’utilisateur clique sur « Valider », il est automatiquement redirigé vers la page target.php. Créons donc maintenant cette page qui va recevoir et traiter les données envoyées par l’utilisateur.

Pour plus de simplicité, je vous recommande de placer les deux pages formulaire.php et target.php dans le même dossier.

Lorsque nous utilisons la method POST dans notre formulaire, une variable $_POST se crée automatiquement en PhP.

Cette variable est une variable tableau qui va stocker les informations envoyées par l’utilisateur. Nous allons donc la réutiliser dans notre page target.php.

Pour le moment, on veut seulement afficher un message de bienvenue personnalisé à l’utilisateur. On va donc écrire quelque chose comme ceci :

On traite les données envoyées via notre formulaire en PhP

Grace au PHP, on peut traiter les données de notre formulaire et interagir avec l'utilisateur

Voilà pour une première exploitation simple des données envoyées par l’utilisateur. Avant de voir des choses plus complexes, nous allons voir ensemble que les formulaires sont loin d’être infaillibles, et comment sécuriser nos formulaires.

Vérifier les données et sécuriser ses formulaires

Lorsque vous créez un formulaire, pensez bien qu’il vous faudra TOUJOURS vérifier les données envoyées par l’utilisateur et sécuriser ce formulaire.

En effet, imaginons un formulaire dans lequel vous demandez à vos visiteurs d’entrer un mot de passe de 8 caractères minimum. Il y aura toujours quelqu’un pour entrer un mot de passe à 4 caractères par exemple ou quelqu’un qui va mettre huit fois « 0 », ce qui n’est pas acceptable en terme de sécurité.

Pensez donc bien déjà à vérifier la cohérence des données envoyées par l’utilisateur avec ce que vous attendez. Vous pouvez faire cela efficacement avec les expressions régulières, que nous verrons plus tard, ou tout simplement avec des conditions.

Concernant la partie sécurisation, en utilisant la méthode POST, on cache les informations envoyées via le formulaire, au contraire de la méthode GET où les informations transitent par l’URL.

Toutefois, ce n’est pas suffisant et il va falloir davantage protéger notre formulaire afin d’éviter que des hackers ou des spammeurs trouvent une faille.

En effet, si on garde notre formulaire en l’état, rien n’empêche un utilisateur de rentrer du code HTML dans le champ lui demandant son prénom comme ceci :

Ne jamais faire confiance aux données envoyées par les utilisateurs

Injection de HTML dans notre formulaire

Vous me direz certainement que cela n’a aucune incidence sur votre site si un utilisateur veut voir son prénom affiché en gras. Dans le cas présent, et avec un formulaire aussi simple, c’est tout à fait vrai.

Cependant, imaginons maintenant que vous possédez un blog et que vos utilisateurs disposent d’un formulaire pour laisser des commentaires. L’utilisation intempestive du HTML est déjà beaucoup plus problématique.

Les véritables ennuis arrivent lorsque certains utilisateurs malveillants tentent d’injecter du JavaScript dans vos formulaires. Le JavaScript est un autre langage de programmation qui va exécuter des scripts, tout simplement.

Il est vrai qu’aujourd’hui des sécurités existent sur les navigateurs récents pour empêcher l’exécution de code JavaScript injecté dans les formulaires. Cependant, ces sécurités peuvent être cassées.

Si quelqu’un de malveillant arrive donc à injecter du code JavaScript dans un formulaire, il pourrait avec un peu d’idée récupérer des cookies contenant des informations sensibles (mots de passe par exemple).

Pour faire simple, vous pouvez considérer qu’un cookie est semblable à une variable à qui on va faire stocker une information.

Il est donc essentiel de protéger ses formulaires. Heureusement, certaines fonctions PhP nous permettent simplement de sécuriser efficacement tout cela.

La première fonction à connaître, nous l’avons déjà vue dans une partie précédente du cours, est la fonction htmlspecialchars().

Cette fonction va nous permettre d’encoder certains caractères HTML comme « < » ou « > » par exemple afin que le code HTML injecté par un visiteur ne soit pas interprété. Le code HTML est donc affiché tel quel.

On va utiliser la fonction htmlspecialchars() autour de notre variable, dans notre page target.php comme ceci :

On utilise la fonction PHP htmlspecialchars pour éviter l'injection de code HTML dans notre formulaire

13.3.7

13.3.6

la fonction HTML specialchars rend inoffensive les balises html

Si maintenant vous désirez totalement supprimer les caractères HTML, il vous faudra utiliser la fonction strip_tags(). Cette fonction, en plus de faire en sorte que les caractères HTML ne soient pas interprétés, les supprime complètement :

strip_tags supprime les balises HTML

L'utlisateur peut insérer des balises HTML dans notre formulaire

strip_tags va completement supprimer les balises HTML envoyées par l'utilisateur

Voilà, votre formulaire est maintenant sécurisé ! Notez qu’on pourrait en faire encore plus, en supprimant les caractères inutiles (double espace, retour à la ligne non désiré, etc.) avec la fonction trim().

On pourrait également retirer les antislashs si certains petits malins s’amusaient à en mettre avec la fonction stripslashes().

Si vous avez beaucoup de champs dans votre formulaire, plutôt que de faire les vérifications à chaque fois, vous pouvez également créer une fonction qui les fera automatiquement.

Un petit exemple ? Allez, c’est parti !

strip_tags supprime les balises HTML

L'utilisateur peut insérer n'importe quoi dans notre formulaire

Notre fonction de sécurisation de notre formulaire fonctionne bien, le code HTML n'a pas pu être injecté

Voilà tout pour les formulaires ! N’hésitez pas à vous entraîner avant de continuer !

16 commentaires

  1. abdelmalek derouich

    merci infiniment pour ces cours, j’été vraiment nul et maintenant je commence à n’avancer dans la création des sites WEB en utilisant le HTML, le CSS et le PHP et c’est grâce à vos cours minutieusement expliqués.

  2. bonjours ,je suis encore un petit peux débutant dans le codage , j’aimerais faire une page d’inscription et une de connexion en php et mysql je dispose d’une base de donnée . merci d’avance pour votre aide .
    ps : j’adore vos vidéo =)

  3. Bocomba William Edouard

    bonjour,

    je suis William un de vos disciple Abidjan. En lisant le code source du site pierre-girraud.fr j’ai constater un bon nombre de balise link et de balise meta. Et je me pose la question de savoir a quoi elle servent? Par ailleurs je suis impatient de savourer la suite du cour sur php et mysql. Merci d’avance et surtout merci pour tout.

    Amicalement

    William

  4. Bonjour,

    Je te remercie de tout mon cœur Pierre!
    Tu consacre ton temps à partager des choses meilleures.
    Je suis débutant mais je croix de devenir pro, tes tutos sont claires et faciles à comprendre.
    Merci infiniement

  5. Salut, c’est vraiment génial ce que tu fais mais j’ai encore un problème, je n’arrive pas a créer un formulaire pour envoyer un mail ou pouvoir communiquez avec moi (pas un bloc mais vraiment une page de contact).
    Merci de bien vouloir m’aider…

    • Bonjour,

      J’explique déjà tout cela dans mes cours HTML / CSS et PhP… Je ne peux donc que vous conseillez de revoir les parties consacrées à cela (lien pour envoyer un fichier / un mail et partie formulaire HTML et PhP).

      Bonne continuation,
      Pierre

  6. Vous etes genial, j’ai vu vos cours sur youtube et votre adresses qui ma poussé avenir sur votre site. Mr pierre je suis un petit zero de la programmation mais suis pas mal j’aimerai vous assistez dans vos taches pour me former…! merci pour les cours suis content

  7. je voudrais que tu m’explique un peut comment fonctionne les fonction static en phph

  8. bonjour
    merci pour ce cours mais je ne vois pas la partie base de données et pourtant l’intitulé c’est cours complet!!!!

  9. Salut Pierre Giraud,

    Je viens de regarder le tuto sur HTML et CSS, c’est magnifique !!!
    Maintenant j’aimerais creer des sites dynamiques avec PHP MySQL.
    Pourriez vous m’aider s’il vous plait. Merci de votre aide en envoyant des tuto tres tres interessant.

Répondre

Votre adresse email ne sera pas publiée. Les champs obligatoires sont marqués d'une étoile *

*