LE LANGAGE PHP
Module 18: Développement web
Prof : Elyase CHIGUER
Lycée : IBN SINA
Chapitre 3:
Le Traitement des Formulaires
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"]
Le traitement d’une liste défilante
<form name="test" id="test" method="post"
action="#">
<select name="couleur[ ]" multiple size="5">
<option value="Rouge">Rouge</option>
<option value="Vert">Vert</option>
<option value="Bleu">Bleu</option>
<option value="Noir">Noir</option>
</select>
<input type="submit" value="Envoyer"
name="but_submit">
</form>
<?php
if(isset($_POST["but_submit"]))
{
$tab = $_POST["couleur"];
foreach($tab as $selectValue)
{
echo $selectValue."<br>";
}
}
?>
Le traitement de case à cocher
Le fichier de traitement
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
Correction version 1
Fichier: qcm.php
Fichier: correction.php
Version 2 du QCM
Correction version 2
Exercice 2 : mon deuxième QCM
Exemple de Solution
Exercice
Réalisez un QCM de 10 questions concernant
HTML, CSS , PHP et qui affiche le score
▪ 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 "&lt;")
•strip_tags() : Supprime les balises HTML et PHP d'une chaîne
Sécurité
Cours PHP-CHAP3.pdf
Cours PHP-CHAP3.pdf
Cours PHP-CHAP3.pdf

Cours PHP-CHAP3.pdf

  • 1.
    LE LANGAGE PHP Module18: Développement web Prof : Elyase CHIGUER Lycée : IBN SINA
  • 2.
  • 3.
    2 Méthode d’envoi d’unformulaire • 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
  • 4.
    Méthode d’envoi d’unformulaire ▪ 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.
  • 5.
    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.
  • 6.
    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.
  • 7.
    CRÉER UN FORMULAIRE 2fichiers 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
  • 8.
    Premier cas (deuxfichiers 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
  • 9.
    Deuxième cas: unseul 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!
  • 10.
    Deuxième cas: unseul 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
  • 11.
    Récupération des donnéessaisie 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"]
  • 12.
    Le traitement d’uneliste 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>
  • 13.
    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"]
  • 14.
    Le traitement d’uneliste défilante <form name="test" id="test" method="post" action="#"> <select name="couleur[ ]" multiple size="5"> <option value="Rouge">Rouge</option> <option value="Vert">Vert</option> <option value="Bleu">Bleu</option> <option value="Noir">Noir</option> </select> <input type="submit" value="Envoyer" name="but_submit"> </form> <?php if(isset($_POST["but_submit"])) { $tab = $_POST["couleur"]; foreach($tab as $selectValue) { echo $selectValue."<br>"; } } ?>
  • 15.
    Le traitement decase à cocher
  • 16.
    Le fichier detraitement
  • 17.
    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
  • 18.
    Correction version 1 Fichier:qcm.php Fichier: correction.php
  • 19.
  • 20.
  • 21.
    Exercice 2 :mon deuxième QCM
  • 22.
  • 23.
    Exercice Réalisez un QCMde 10 questions concernant HTML, CSS , PHP et qui affiche le score
  • 24.
    ▪ Le codeci-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 "&lt;") •strip_tags() : Supprime les balises HTML et PHP d'une chaîne Sécurité