Nous allons voir un exemple de variables un peu spéciales. En effet, elles vont nous servir à récupérer le contenu d'un champ d'un formulaire HTML pour l'exploiter en PHP. Cette variable un peu spéciale et accessible dans tous vos fichiers PHP se nomme $_POST (facile à retenir).
Vous vous souvenez de l'exercice de la partie 2.4? À la fin de ce chapitre, je vous disais que la variable qui contenait l'âge du visiteur était un peu trop statique...
Et bien nous allons reprendre cet exemple pour savoir l'âge véritable du visiteur (à condition qu'il ne triche pas en rentrant son âge). :)
Pour cela, il va falloir mettre en place un petit formulaire en HTML. Ce dernier se constituera d'un champ de texte et d'un bouton envoyer.
Voici le formulaire :
Normalement ce code source ne doit pas vous surprendre. On met en place un formulaire qui agira sur notre page (age.php par exemple) et on le construit petit à petit.
Pour récupérer son âge une fois le formulaire envoyé, nous allons vérifier s'il l'a bien saisi : pour ça, la fonction isset() convient parfaitement. :)
Ensuite, on l'affichera à l'aide de la variable $_POST que l'on utilisera comme une variable classique. Rien ne vaut un code source commenté pour faire des explications un peu plus détaillées :
Alors, tout d'abord on a la condition. On vérifie si on a bien rempli le champ qui a pour nom "age_visiteur" en appliquant la fonction isset() à la variable $_POST['age_visiteur']. En fait, cette variable vaut le texte qu'on rentre dans la zone de texte. Ainsi, on peut très bien l'utiliser dans une boucle (vous verrez ça un peu plus tard), une condition (comme on vient de le faire), un echo etc. Vous remarquerez qu'elle a une syntaxe un peu particulière. Détaillons tout ça :
$_POST : Il faut indiquer à PHP que c'est une variable qui vaut l'âge du visiteur saisi dans la zone de texte du formulaire.
['age_du_visiteur'] : Pour que la variable $_POST sache sur quel élément du formulaire elle doit travailler, on lui dit qu'il s'agit de celui qui a pour nom "age_du_visiteur". Le nom de la zone de texte doit être, comme vous le constatez, entouré de crochets et d'apostrophes (ou guillemets).
Retournons à notre script si vous le voulez bien. :)
Après la condition donc, on affiche l'âge du visiteur. On utilise la variable $_POST['age_du_visiteur'] comme une variable normale. Seulement, vous ne l'avez pas créée. Et pourtant, elle est là, sous vos yeux ! En fait, dès que le visiteur appuie sur le bouton Envoyer, une variable $_POST['age_du_visiteur'] est crée sur la page de destination du formulaire. C'est là un des grands avantages de ce type de variables, nous n'avons pas besoin de nous soucier de sa création : tout ça se fait dans les entrailles de PHP!
Avouez que les variables $_POST ne sont pas bien compliquées à comprendre. :)
Ce qui est difficile au début, c'est leur syntaxe un peu particulière (les crochets [ ]) mais on s'y habitue (très) vite.
Pensez à faire des essais chez vous qui suivent le même modèle que mon exemple pour bien vous familiariser avec tout ça avant de vous attaquer à l'exercice qui va suivre. ;)
Nous voilà au moment crucial de ce tutoriel : l'exercice !
On va en effet réutiliser ce qu'on a appris pour faire notre premier script éutileé pour notre site : une protection par mot de passe. Admettons que vous ayez une partie privée pour gérer votre site, ça serait dommage que tout le monde puisse y accéder non? :D
Allez, vous êtes prêts? Voici l'énoncé :
On veut donc protéger une page par un mot de passe. On va considérer que la page en question s'appelle "motdepasse.php". Alors, le but de notre script est de vérifier SI le mot de passe entré par l'utilisateur est correct. Si c'est le cas, ALORS on lui affiche ce qu'il doit voir. SINON, on affiche une nouvelle fois le formulaire avec un message "Mot de passe incorrect" jusqu'à ce qu'il trouve le bon mot de passe.
Il va donc nous falloir un champ de texte de type "password" et un bouton envoyer... et c'est tout. :)
D'ailleurs, combien de variables va-t-on utiliser? 10? 20? Une seule : $motdepasse qui contiendra le mot de passe entré par l'utilisateur pour vérifier si ce dernier est correct.
C'est un script oh combien utile et très simple à réaliser, mais ne vous pressez pas... Si vous sentez des coups de pompes, ne vous entêtez pas à coder pour tout supprimer dans un élan de colère (ça ne servirait à rien). :D
Si vraiment vous n'y arrivez pas, regardez la correction mais... ce n'est pas beaucoup plus compliqué que celui que j'ai utilisé pour vous expliquer l'utilisation des variables $_POST ci-dessus.
Bonne chance! :)
Normalement, vous ne devriez pas être surpris par la correction de ce script. Si jamais c'est le cas, ne paniquez pas : l'essentiel n'est pas de savoir coder tout seul dans son coin (ça on y arrive progressivement, en pratiquant) mais de savoir s'ouvrir à la correction. Ainsi, si vous comprenez la correction, vous êtes en théorie capable de reproduire ce script.
Séparons le code en deux parties :
1) D'un coté, on a la vérification, qui est composée de deux conditions : si le visiteur a rempli la zone de texte et si le mot de passe entré est "noshade", alors on peut lui afficher la page cachée.
Sinon, on re-affiche le formulaire avec une alterne "Mot de passe incorrect!".
2) Si le visiteur arrive sur la page pour la première fois, il n'y a donc aucune variable $_POST, on lui affiche donc le formulaire. S'il a rentré un mot de passe qui est incorrect, on lui affiche un message d'erreur en prime. :)
Voilà, ce n'était pas bien compliqué. Si vous avez eu du mal : persévérez, continuez à lire le cours et surtout à bien faire des tests chez vous, même s'ils semblent bêtes et inutiles. Dites-vous que c'est comme ça que vous arriverez à faire un livre d'or, un système de news ou tout ce que vous voulez (sauf le café, mais on y travaille)...
Allez, faites une pause et lisez la rubrique suivante : nous allons apprendre à manier les variables $_GET ... vous allez voir, ça en vaut également vraiment la peine. :)
Allez, qu'est-ce que c'est encore que cette bestiole là?
Bon, en grand surfeur que vous êtes, vous avez certainement déjà du remarquer des choses bizarres dans la barre d'adresse de votre navigateur, quand vous passez d'une page à l'autre sur certains sites...
Prenons l'exemple d'une URL de la version précédente de NoShade :
Nous avons des points d'interrogation ( ? ) et des signes ( & ), avec des ( = ) ... bizarre, non?
Pour cette adresse-ci, nous avons en fait trois variables $_GET.
?p | = | p_tutoriaux |
&sujet | = | CSS |
&id | = | 21 |
La première variable $_GET est toujours affichée avec un point d'interrogation ( ? ), tandis que toutes les suivantes s'utilisent avec un signe ( & ).
Mais, à quoi ça sert concrètement tout ça?
C'est très simple, grâce à ces petites indications contenues dans l'adresse du navigateur, nous allons pouvoir créer des actions dans notre code PHP.
Un exemple très simple consiste en l'affichage de contenu différent en fonction de ces variables. Un premier exemple toute suite!
Pfiou, il est long ce code! :D
Bon, si vous essayez ça chez vous (enregistrez ce code dans un fichier nommé "index.php"), vous allez mieux comprendre! :)
Nous avons donc en premier lieu un simple menu, avec quatre rubriques. Dans les liens de ce menu, on peut constater l'existence de variables GET (rappelez vous, les points d'interrogations ...).
En second lieu, nous avons un code PHP avec des conditions.
On vérifie d'abord si il y a une variable $_GET, puis, nous analysons son résultat.
Si celle-ci vaut "accueil", c'est donc que le visiteur à cliqué sur "Accueil" dans le menu, et qu'il souhaite donc afficher le contenu de la page d'accueil. (hé oui, tout simplement!)
Si celle-ci vaut "passions", c'est que le visiteur à cliqué sur "Mes passions" dans le menu, on affiche donc le contenu correspondant... et ainsi de suite! :)
Alors, là, vous vous dites : "Génial ça!! par contre, pour mettre à jour le site, c'est vraiment pas pratique, et pire encore si les pages sont longues... et en plus on doit répéter deux fois le contenu de la page d'accueil... non, bon, en fait il est complètement nul ton script!"
Là je vous répondrais que vous avez raison, complètement! :D Mais! (oui, il y a un "mais"!), que vous verrez dans le chapitre suivant comment remédier à tout cela, et rendre donc ce code beaucoup plus utile et productif!
Voyons ensemble un autre cas d'utilisation de ces variables, il s'agit de l'affichage de messages d'avertissements dans une page.
Je vais vous laisser vous-même écrire le code, mais ne vous abandonne pas sans vous donner quelques explications pour vous guider.
Imaginons, un site où l'on peut se connecter/déconnecter à une partie réservée aux membres de l'équipe du site.
Nous voulons, à la connexion du membre, lui souhaiter la bienvenue, en re-affichant son pseudo (tant qu'on y est), histoire de réviser les variables $_POST.
On va donc créer une page avec un simple petit formulaire pseudo et mot de passe.
Une fois l'accès autorisé (si le pseudo + mot de passe sont correctes), nous lui afficherons donc un message "Bienvenue $pseudo", puis, un lien "Déconnexion", pour qu'il puisse sortir et revenir à la page du formulaire de connexion, avec, en prime, un message "Vous avez bien été déconnecté, à bientôt!".
Vous pouvez le faire en un seul fichier, ou en deux fichiers, comme vous voulez, les deux sont possibles. :)
Bon courage! ;)
Avant d'attaquer le chapitre suivant, je pense qu'il est vraiment important d'arriver à réaliser ce script seul, ce n'est pas très compliqué, prenez juste le temps de penser à "Comment je vais procéder?" avant de vous lancer tête baissée! :)
Une fois ce script réalisé et fonctionnel, vous pouvez passer à la suite.
Par : Legibe & Vinchz, le 5 septembre 2006