Formations à l'informatique et à l'électronique

Auteur : SD
Créé le : 29-11-2015

Les formulaires en PHP

Les formulaires permettent à l'utilisateur d'envoyer des données vers le serveur.

Capture d'écran d'un formulaire html php

Le formulaire est introduit par la balise HTML <form>.

Code de base d'un formulaire

<form method="post" action="traitement.php">
<!-- On place ici les différents contrôles du formulaire -->
</form>

Les différents contrôles

La liste ci-dessous n'est pas exhaustive.

Texte

<input type="text" />

Nombre

<input type="number" />

Bouton radio

<input type="radio" name="etat" value="on" checked/>

Case à cocher

<input type="checkbox" name="accept" id="accept" checked="checked" />

Bouton

<input type="submit" value="Submit" />

Liste déroulante

<select name="section">...</select>

Slider

<input name="slider" type="range" min="0" max="20" step="1" value="5" />

Zone de texte

<textarea name="memo" rows="5" cols="30">Contenu dans la zone de texte</textarea>

Pour chaque contrôle, l'atribut "name" servira de nom de variable dans le script php qui traitera les informations. Il faut donc que ces noms soient uniques.

Exemple de formulaire

<!DOCTYPE html>
<html>
<head>
<title>Test méthode POST</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
</head>
<body> <!-- Corps de la page -->
<form action="formulaire.php" method="POST"> <!-- Début du formulaire -->
<!-- Liste déroulante -->
<select name="titre">
<option>Mlle</option><option selected>Mme</option><option>M.</option>
</select>
<!-- Zones de texte -->
<label for="nom"> Nom : </label><input type="text" name="nom" id="nom" placeholder="Entrez votre nom" /><br/><br/>
<label for="prenom">Prénom : </label><input type="text" name="prenom" id="prenom" value="Prénom par défaut" /><br/><br/>
<!-- Bouton radio -->
<label for="sexe">Sexe : </label>
<input type="radio" name="sexe" id="sexe" value="H" checked /> Masculin
<input type="radio" name="sexe" value="F" /> Féminin
<br/><br/>
<!-- Slider -->
<label for="age">Age : 1 </label>
<input type="range" name="age" id="age" min="1" max="99" step="1" value="18" /> 99
<br/><br/>
<!-- Case à cocher -->
<input type="checkbox" name="bDebutant" checked="checked" /> Je débute en PHP<br/><br/>
<!-- Bouton -->
<input type="submit" name="btOK" value="OK">
</form> <!-- Fin du formulaire -->
</body>
</html>

Le code ci-dessus affiche le formulaire mais ne fait aucun traitement.

Traitement du formulaire

Comment accéder aux valeurs qui ont été saisies dans le fomulaire ?

Nous allons dans un premier temps simplement afficher les informations reçues par le script php lorsque l'utilisateur valide le formulaire. Ces informations sont contenues dans la variable php $_POST ($_GET si votre formulaire utilise la méthode GET).

Créer un fichier php appelé formulaire.php et y copier le code ci-dessus.

Ajouter le code ci-dessous au tout début du fichier (avant <!DOCTYPE...>)

<?php
if($_POST) {
echo 'Contenu de la variable $_POST : >';
print_r($_POST);
}
?>

En exécutant notre script, on remarque que la variable $_POST est un tableau associatif. L'attribut "name" de chaque contrôle du formulaire est utilisé comme clé associée à la valeur saisie dans le formulaire.

On accède par exemple au nom qui a été tapé en écrivant : $_POST['nom']

Exemple d'exploitation des valeurs saisies dans le formulaire

Modifier le code php du fichier précédent comme indiqué ci-dessous :

if($_POST) {
if($_POST['nom']!='') {
echo "<br/><br/>Bonjour " . $_POST['titre'] . " " . $_POST['nom'] . "!<br/>";
echo "Je peux vous appeler " . $_POST['prenom'] . "<br/><br/>";

if(isset($_POST['bDebutant'])) {
echo "C'est une bonne idée de commencer à apprendre à programmer en PHP !<br/><br/>";
}
else {
if($_POST['sexe']=='H') {
$mot = "débutant";
}
else {
$mot = "débutante";
}
echo "Comme vous n'êtes pas " . $mot . " vous pouvez passer directement au mini-projet !<br/><br/>";
}
}
}

La fonction isset() permet de tester si une variable existe et est différente de NULL.

Sécurité

Le code ci-dessus a le gros défaut de "faire confiance" à l'utilisateur en ne vérifiant pas les informations reçues. En effet, un utilisateur mal intentionné peut par exemple à la place de son nom mettre du code HTML ou Javascript ce qui représente une faille de sécurité très importante.

Taper par exemple : <script> alert('Site Hacké !!!'); </script> à la place de votre nom et valider le formulaire.

Il faut donc systématiquement supprimer ou "échapper" les éventuelles balises que l'utilisateur aurait pu envoyer. Pour cela le langage php met à notre disposition 2 fonctions :

Première modification

Sécuriser le fomulaire en utilisant la fonction strip_tags() pour tous les champs utilisés.

Insérer une copie d'écran de votre code PHP dans votre rapport.

Deuxième modification

Dans l'état actuel, lorsque un utilisateur valide le formulaire, les informations qu'il a rentré dans les différents contrôles ne sont pas conservées (par exemple si il a décoché la case "Je débute en PHP" celle-ci est de nouveau cochée une fois le fomulaire validé).

Faire en sorte que les informations saisies soit conservées dans le formulaire une fois que celui-ci a été validé.

Exemple pour le champ "prenom" :

...
<input type="text" name="prenom" value="<?php if($_POST) echo strip_tags($_POST['prenom']); ?>" /><br/><br/>
...

On peut traduire le code php inséré à la place de la valeur de l'attribut "value" par : Si la variable $_POST existe alors afficher le prénom entré par l'utilisateur (sécurisé par strip_tags).

Insérer une copie d'écran de votre code PHP dans votre rapport.

Mini-projet

Créer un site internet en php composé de 3 pages :

Le code HTML de chaque page généré par votre code PHP devra être valide (valider votre code HTML sur le site w3.org)

Insérer une capture d'écran de la validation dans votre rapport.

Articles connexes

Premiers pas en HTML
Premiers pas en PHP
Premiers pas en CSS
Accéder à une base Access (.mdb) en PHP

Vous avez apprécié cet article ? Partagez le !

Article connexe : Premiers pas en PHP