2
Méthode d’envoi d’un formulaire
• Méthode GET (transmission par URL) :
Une des façons les plus simples pour faire transiter des données de page en
page est l’insertion de ces données dans l’URL
Méthode d’envoi d’un formulaire
▪ Méthode POST: elle cache les informations transmises . De plus,
elle permet d'envoyer des données importantes en taille et assure la
gestion de l'envoi de fichiers.
Les tableaux superglobaux $_POST et $_GET
▪ $_GET et $_POST sont des tableaux de données associatifs et
superglobaux. Voici leurs principales caractéristiques :
▪ Ils sont générés à la volée par PHP avant même que la première ligne
du script ne soit exécuté.
▪ Ce sont des tableaux associatifs : Les clés correspondent aux noms des
variables transmises et les valeurs à celles associées à ces variables.
▪ Ils sont superglobaux, c'est à dire visibles de partout dans le
programme (même à l'intérieur d'une fonction utilisateur).
▪ Ils sont accessibles en lecture et en écriture. Il est donc possible de les
modifier.
Quelle méthode utiliser ?
• Le plus souvent, vous pouvez choisir indifféremment l’une ou l’autre
méthode d’envoi. Toutefois, la méthode POST s’impose dans les cas
suivants :
• envoi d’un fichier ;
• envoi de données importantes en taille ;
• envoi de données confidentielles (un mot de passe par exemple) ;
• La méthode GET est recommandée pour tous les autres cas.
CRÉER UN FORMULAIRE
2 fichiers
distincts:
• un pour contenir les
éléments du formulaire:
Bouton radio, Zone texte, …
• Un pour récupérer les
données saisies et les traiter
Un même fichier
• Contenant les 2: Les
éléments du formulaires
(bouton radio, …) et le script
qui les traitera
Premier cas (deux fichiers distincts)
Création du
Formulaire
en Html
Création du
script par
PHP
• Zone texte, Bouton radio
• Liste déroulante Cases à cocher
•Action="myscript.php"
• Fichier:"myscript.php"
• Récupération des données
saisies
•Traitement (programme)
Question: Le fichier
formulaire peut-
il avoir l’extension .php?
Réponse: OUI, s’il
contient un (ou des)
script(s)
php en plus du formlaire.
Sinon, .html
Deuxième cas: un seul fichier
Fichier: qcm.php
<form Name=’’ myform’’
Method=’’post’ Action=’’qcm.php’’ ….>
…………..Eléments du formulaires
</form>
<?php
Instructions de traitements des données saisies
….
?>
L’action du
formulaire est Le fichier
qui contient le formulaire
lui même
Les instructions
à exécuter sont écrites
dans ce même fichier!
Deuxième cas: un seul fichier (suite)
Lors de l’affichage pour la
Fichier: qcm.php
<form Name=’’ myform’’
Method=’’post’ Action=’’qcm.php’’ ….>
…………..Eléments du formulaires
</form>
<?php
Si les données ont été saisies
Alors
{Instructions de traitements des données
saisies}
?>
première fois du formulaire, le bloc
d’instruction php ne devra pas
s’exécuter, puisque les données
n’ont pas encore été saisies ! ! !
Il faut vérifier l’existance des
données AVANT !
Usage de
Isset($mavariable)
qui :
* retourne true si la variable
contient une valeur;
* retourne FALSE si elle n’est
pas encore définie
Récupération des données saisie dans un formulaire
▪ Elle diffère selon le type de la réponse (unique, multiple)
réponse (ou choix) unique réponses (ou choix)
multiples
Zone de saisie, Cases à cocher
bouton radio Liste de sélection à choix Multiple
zone de texte multiligne,
Liste de sélection à choix unique
Réponse unique :
L’élément choisi est récupéré du tableau $_POST par son nom
Il est récupéré dans une variable
$x=$_POST["nom_du_champs"]
Ou
$x= $_GET ["nom du_champs"]
Le traitement d’une liste déroulante
<body>
<form action="traitement.php" method="post">
<p>
<select name="couleur">
<option value="rouge">Couleur rouge</option>
<option value="vert"
selected="selected">Couleur verte</option>
<option value="bleu">Couleur bleue</option>
</select></p>
<p><input type="submit" value="Envoyer" /></p>
</form>
<?php
if(isset($_POST['couleur']))
{
echo "la couleur sélectionnée
est".$_POST['couleur'];
}
?>
</body>
Récupération : Elément à réponse multiples
▪ Cases à cocher:
▪ Seuls les éléments cochés seront envoyés
▪ L’élément est récupéré par son nom dans une variable
$x=$_POST["macaseacocher"]
▪ Liste de sélection à choix multiple (défilante) :
▪ Le nom de l’élément dans le formulaire doit être suivi des []
▪ Les réponses choisies sont envoyées sous forme d’un tableau
▪ Les réponses sont donc récupérés dans un tableau :
$tablo = $_POST ["malisteselect"]
Exercice 1 : un QCM simple
▪ Réaliser le qcm ci-dessous
Rappel sur les boutons radio:
1. Les boutons doivent avoir le même nom (name)
2. Les valeurs doivent être différentes (value)
EX: Si l’internaute clique sur le troisième: le couple (q,r3) est stocké dans
le tableau $_POST puis envoyé au script défini
8comme action du formulaire $_POST['q']=r3
▪ 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 :
•htmlspecialchars() : Convertit les caractères spéciaux en entités HTML
(par exemple "<" (inférieur à) devient "<")
•strip_tags() : Supprime les balises HTML et PHP d'une chaîne
Sécurité