foncéclairChoisir le thème bleu   



Après avoir vu lors de la quatrième étape les variables, nous allons à présent nous attaquer à la récupération des données d'un formulaire. Rassurez-vous, rien de sorcier, juste un peu d'attention et ça passera comme une lettre à la poste (quoi qu'en ces temps mouvementés, la comparaison est douteuse... ^^). Bon aller, un peu de sérieux, attaquons nous donc a ce chapitre du cours. Vous êtes prêts? C'est partit.


1- Introduction.


C'est pas très habituel de faire une introduction, mais la, c'est un passage obligé. En effet, pour récupérer les données d'un formulaire, il faut d'abord en créer un non? C'est pour cela que vous avez besoin des bases du (x)HTML. N'étant pas un tutoriel sur les HTML, je vais passer sur les explications sur comment construire un formulaire, uniquement vous expliquer comment en exploiter les données. (Allons allons au fond, silence s'il vous plait :P) Bon, rassurez-vous, je ne vous lâche pas dans la nature, je vous donne un exemple concret de formulaire:



<form action="tuto.php" method="post">
<input type="text" name="texte" /><br />
<input type="submit" name="submit" value="Envoyer le formulaire" />
</form>
 


Ce qui nous donne ceci:


Vous voyez, rien de bien méchant. Deux input, un de type text, l'autre de type submit. Je les nomme respectivement texte et submit et enfin, j'indique que le formulaire (tout au moins son contenu) doit être envoyé à la page tuto.php grâce à la méthode post. On pourrait également utiliser la méthode get, mais celle-ci ne sera que brièvement expliquée (par choix tyrannique de ma part niark niark niark ^^) à la fin pour des raisons que je vous exposerais alors.


2- Récupération des données.


Pour récupérer les données d'un formulaire, il n'y a rien de très compliqué. Il vous suffit d'utiliser la variable spéciale de PHP $_POST en utilisant le modèle suivant:



$_POST ['nom donné à votre input']
 


Vous voyez, très simple ! Cette variable spéciale de PHP vous permet de récupérer les données du formulaire en sélectionnant par son nom entre les crochets l'input que vous souhaitez.

Vous vous souvenez de notre formulaire de tout à l'heure? Et bien nous allons faire un petit exemple. Voici comment il conviendrait de faire pour récupérer et afficher le contenu de l'input texte de tout à l'heure (il faut mettre ce script dans une page que vous nommerez "tuto.php" évidemment):



<?php
$contenu = $_POST['texte'];
echo 'Vous avez écrit: ' . $contenu;
?>
 


Vous n'êtes pas obligé de me croire sur parole lorsque je vous raconte quelque chose, voici une démonstration >> ICI

A noter que l'on aurait pu aussi écrire directement la variable $_POST avec un echo, mais la encore, c'est plus facile de travailler avec des variable, une fois celle-ci déterminé, il est plus facile de la réutiliser que de rechercher à chaque fois la valeur.

Aucune question? Non? Vous devriez pourtant !
Hé oui, en PHP, il faut toujours penser à la sécurité, en effet, si vous rentrer du code html dans le formulaire tel que le code est fait ci-dessus, ce code va être interprété, grave erreur ! En PHP la sécurité est importante, imaginez qu'un pirate rentre un script en PHP ou en JavaScript dans votre formulaire... vous imaginez l'effet que cela pourrait avoir? Bon rassurez-vous, tout va bien pour moi et pour vous, si vous avez testé mon formulaire, vous avez du voir que celui-ci n'interprète pas le code html donné. En effet, une parade existe pour que celui-ci ne soit pas interprété. (ouf ^^)


3- Sécurité.


Bien, cette parade n'est pas très compliquée à mettre en place. Reprenons notre script en PHP de tout à l'heure qui affichait le contenu du formulaire:



<?php
$contenu = $_POST['texte'];
echo 'Vous avez écrit: ' . $contenu;
?>
 


Nous allons maintenant lui appliqué la fonction htmlentities. Cette fonction très pratique transforme du code en valeur html, ainsi, "é" deviendra "&eacute;". Ça permet aisément d'empêcher un script de s'exécuter. Voici quel schéma de construction adopte cette fonction:



htmlentities($valeur, option, charset)
 


Trois options sont possibles, premièrement ENT_COMPAT qui va convertir les guillemets doubles et ignorer les simples. Deuxièmement, ENT_QUOTES qui, lui, convertit les guillemets simples et double, c'est lui que nous utiliserons. Troisièmement, ENT_NOQUOTES qui ignores les guillemets simples et doubles. Pour le charset, je vous invite à regarder ici >> http://fr.php.net/htmlentities. Pour voir duquel vous avez besoin, mais je vous conseil personnellement, le charset UTF-8 que j'utiliserais d'ailleurs dans ce tutoriel.

On reprend donc le code rappelé un peu plus haut et on va le sécuriser:



<?php
$contenu = htmlentities($_POST['texte'], ENT_QUOTES, "UTF-8");
echo 'Vous avez écrit: ' . $contenu;
?>
 


Il est important d'utiliser cette méthode pour chaque donnée envoyé par formulaire sous peine de vous voir hacker relativement facilement.


4- La méthode $_GET.


Bon, vous vous souvenez du code utilisé pour mettre en place le formulaire? Non? ba retourner le voir en haut namého plus sérieusement, reprenez ce code:



<form action="tuto.php" method="post">
<input type="text" name="texte" /><br />
<input type="submit" name="submit" value="Envoyer le formulaire" />
</form>
 


Seulement maintenant, au lieu de la méthode post, on va mettre la méthode get et pour l'exemple, je vais mettre comme page vers laquelle l'envoi s'effectue "tuto2.php". Ce qui donne ceci:



<form action="tuto2.php" method="get">
<input type="text" name="texte" /><br />
<input type="submit" name="submit" value="Envoyer le formulaire" />
</form>
 


Je ne vais pas tout réexpliquer, c'est la même chose au niveau de la structure que tout à l'heure.
Pour la page "tuto2.php" nous allons maintenant utiliser le même script PHP que tout à l'heure à une exception prêt: on va remplace $_POST par $_GET. Ce qui donne ceci:



<?php
$contenu = htmlentities($_GET['texte'], ENT_QUOTES, "UTF-8");
echo 'Vous avez écrit: ' . $contenu;
?>
 


Au final vu du code, très peu de choses changent ! Mais allez à cette page:>> ICI
Et testez le formulaire. Après avoir envoyé le formulaire, regardez la barre d'adresse... Elle affiche un adresse de type tuto2.php?texte=essai&submit=Envoyer+le+formulaire Les donnée sont donc affichées dans la barre d'adresse. Maintenant imaginons que nous mettions en place un champ d'identification à une zone privée avec cette méthode, une fois sur votre espace, vos login et mots de passes apparaîtraient alors en clair. Seconde hypothèse, une personne mal intentionnée passe alors derrière vous... Je vous laisse imaginer la suite... Ce serait regrettable non? Surtout que la fonction $_POST elle permet de passer ces paramètre invisibles. Je vous conseil donc d'utiliser la méthode $_POST dans le doute. Évidemment, pour certaines taches, la méthode get sera plus favorable, mais ce n'est pas la l'objet de ce tutoriel.


Voilà, c'est ici que s'achève cette quatrième partie du cours, ce n'est pas compliqué n'est-ce pas? Si? Rooo, faites un peu des efforts quand même ;-) Si vous avez des questions, passez sur le forum, n'hésitez pas, il est la pour ça. Sinon, vous pouvez passer a la cinquième partie du cours sur les boucles et les conditions.