PHP/Formulaire

Une page de Wikiversité.

< PHP
Les formulaires
Chapitre 8
Leçon : PHP
Chap. préc. : Base de données
Chap. suiv. : Les sessions en PHP

En raison de limitations techniques, la typographie souhaitable du titre, « PHP : Les formulaires
PHP/Formulaire
 », n'a pu être restituée correctement ci-dessus.

Le PHP est un langage de traitement. Une page en php pourra analyser et effectuer des opérations suite à un formulaire. Ce formulaire devra être écrit en HTML, dans une page .html (.htm) ou .php. Pour notre exemple, nous allons créer une page avec laquelle un utilisateur pourra se connecter à une zone administrateur.

Sommaire

[modifier] Présentation

Notre formulaire (form.html) comprendra 2 éléments :

  • le champ du mot de passe ("password")
  • un bouton pour soumettre le formulaire

La page de traitement, en php (traitement.php) :

  • vérification si le mot de passe est correct
  • envoi d'un cookie. ceci sera la preuve que l'ordinateur distant est autorisé à accéder aux pages

Une page de la zone administration (admin.php) :

  • vérification si l'utilisateur est autorisé à consulter les pages

[modifier] Le formulaire

Le code source présenté ici est uniquement le formulaire. Pour un affichage agréable de la page il est nécessaire de l'"habiller". Voir comment créer une page en HTML. Ce script ne sera pas expliqué. Pour le comprendre vous devez avoir les bases du formulaire en HTML.

<form action="traitement.php" method="post">
<input type="password" size="20" name="mdp">
<input type="submit" value="OK">
</form>

En gros, ce formulaire enverra sur la page traitement.php la valeur de l'entrée mdp

[modifier] Le traitement

Pour comprendre la suite, vous devez avoir en tête la chose suivante sur les variables. Le champ dont le nom est mdp (name=mdp) envoie sur la page de traitement la variable $mdp avec pour valeur l'entrée renseignée.

Pour récuperer les valeurs d'un formulaire on utilise $valeur=$_POST["nomvariable"];

Si vous désirez récuperer les valeurs passée via une URL, par exemple http://www.domaine.com/index.php?mdp=valeur, on utilise $valeur=$_GET["mdp"];

Il est possible de récuperer directement la valeur d'un formulaire via le nom du champ (dans notre exemple $mdp contiendrait la valeur saisie du formulaire) mais il est fortement conseillé d'utiliser $_POST pour des raisons de sécurité et de compatibilité.

<?php //traitement.php
 
$motdepasse = 'qwerty'; 
/* voici le mot de passe à envoyer si l'on veut être 
  connecté */
 
if (empty($_POST["mdp"]) OR $_POST["mdp"] != $motdepasse) { 
  /* si la valeur envoyée est vide ou différente de la valeur 
     demandée */
  exit; 
  /* interruption du script (voir php/interrompre_un_script) */
}
 
setcookie("wiki",$_POST["mdp"],time()+3600);
/* le serveur envoie un cookie à l'utilisateur pour 
   permettre l'accès aux pages administration */
 
header("Location: admin.php"); 
/* la page redirige l'utilisateur vers la page de la 
   zone d'administration (cette fonction doit être 
   utilisée avant tout code HTML) */

[modifier] La zone administration

La zone administration va vérifier si l'utilisateur est autorisé à consulter ces pages. Il va comparer le mot de passe entré dans le cookie avec le mot de passe réel.

<?php // admin.php
 
$motdepasse = 'qwerty'; 
/* le (vrai) mot de passe */
 
$mdp = $_COOKIE["wiki"];
/* le mot de passe enregistré sur le cookie.
   L'accès aux cookies se fait au travers du
   tableau super-global $_COOKIE. Il fonctionne
   comme $_POST ou $_GET. */
 
if ($mdp != $motdepasse) { 
  /* si le mot de passe n'est pas correct */
 
   exit('Haha ! Tu voulais voir l\'admin sans mot de passe ?!');
   /* interruption du script avec un joli message ^^ 
      notez le backslash devant l'apostrophe qui permet 
      de ne pas interrompre la chaine de caractères */
}
 
echo "affichage de admin.php"; 
/* la page peut s'afficher correctement. Si le script
   arrive ici, c'est que le mot de passe est correct,
   autrement le script aurait été arrêté (appel à exit
   plus haut. */


PHP
Base de données