Imprimer tout le livreImprimer tout le livre

Transmission de données

Dans cette sequence, nous montrons comment transmettre et récuperer des données en utilisant les liens, les formulaires et les sessions.

Site: Touch By SukaJanda01
Cours: Developpement web dynamique avec PHP
Livre: Transmission de données
Imprimé par: Visiteur anonyme
Date: jeudi 1 mai 2025, 13:05

1 Introduction

Les formulaires sont surtout utilisés pour transmettre à un script des données saisies par un utilisateur. Le langage html est utilisé pour la mise en place de formulaires. Les sessions permettent de stocker des données partagées par plusieurs scripts. Lorsque les données partagées sont nombreuses l'utilisation des formulaires et des liens pour les transmettre est très contraignante.Dans ce module nous allons voir comment récupérer et transmettre avec le langage PHP les données saisies par l'utilisateur à l'aide d'un formulaire ou dans une session.

2 Rappel sur les formulaires html

Les formulaires sont délimités à l'aide de la balise form qui englobe un ensemble de contrôles permettant la saisie de données. Nous allons voir dans cette partie les principales balises HTML pour la création de formulaires.

2.1 La balise form

Elle n'est pas visible sur l'interface utilisateur mais dispose d'un ensemble d'attributs qui détermine le comportement du formulaire. Parmi ces attributs nous pouvons citer:

L'attribut action: Il a pour valeur le chemin ou l'URL du script qui va recevoir les données du formulaire.

L'attribut method: Il a pour valeur la méthode de transmission des données. Deux méthodes sont disponibles :

  1. La méthode GET: Elle signifie que les données sont transmises via l'URL. Ce qui les rend visible par l'internaute. Si l'attribut method est omis c'est la méthode GET qui est utilisée
  2. La méthode POST : Les données transmises sont cachées à l'internaute.

Exemple: 

<form action= "../inserer.php" method= "post">...</form>

2.2 Les balises input, textarea et select

Les balises utilisées pour la saisie d'informations sont les balises input, textarea et select. Elles disposent toutes d'un attribut name correspondant au nom du contrôle et qui est indispensable pour la récupération des données.

La balise input: Selon la valeur de son attribut type, la balise input engendre différents rendus :

  • type="text" : zone de texte pour la saisie de données.
  • type="submit" : bouton de soumission du formulaire.
  • type="reset" : bouton de réinitialisation du formulaire.
  • type="radio" : liste dont un seul choix est possible ; il faut utiliser plusieurs boutons radio du même nom (propriété name) pour que cela soit utile.
  • type="password" : Même principe que text, il est prévu pour les mots de passe : le texte n'est pas affiché clairement lors de la saisie.
  • type="hidden" : Même principe que text mais celui-ci n'est pas visible.
  • file : bouton permettant de sélectionner un fichier de l'ordinateur ; la plupart des navigateurs l'accompagnent d'une case de texte contenant le chemin d'accès au fichier.
  • type="checkbox" : case à cocher.
  • type="button": un bouton simple ayant la même allure que submit ou reset. Il est généralement utilisé avec javascript,...

La balise textarea: Il permet de saisir du texte sur plusieurs lignes.

La balise select: Les listes déroulantes sont généralement utilisées pour que l'utilisateur ne puisse sélectionner qu'une valeur comme pour les boutons radio. Les listes déroulantes peuvent également être utilisées pour permettre de sélectionner plusieurs valeurs (voire une ou pas du tout) grâce à l'attribut multiple.

3 Récupération de données de formulaires

Lorsqu'un formulaire est soumis l'ensemble des données qu'il contient sont envoyées au script défini par l'attribut action. Les données transmises sont disponibles automatiquement dans les tableaux associatifs _GET (méthode get utilisée), _POST (méthode post utilisée) ou GLOBALS (disponible entre autres dans les deux cas) et _REQUEST (requêtes http).

3.1 Exemples

Deux exemples avec le code HTML du fichier contenant le formulaire et le code PHP du fichier qui récupère et affiche les données saisies

Code HTML du formulaire Code PHP de récupération des données

<form action= "inserer.php" method= "post">

 <input type="text" name="nom" /><input type="text" name="prenom" />

 <input type="submit" name="Ok" value="Ok" />

</form>

<?php

  echo "Nom:" . $_POST["nom"] . "<br />";

  echo "Prenom:" . $GLOBALS["_POST"]["prenom"];

?>

<form action= "inserer.php">

  <input type="text" name="nom" />

  <input type="text" name="prenom" />

 <input type="submit" name="Ok" value="Ok" />

</form>

<?php

echo "Nom:" . $_GET["nom"] . "<br />";

echo "Prenom:" . $GLOBALS["_GET"]["prenom"];

echo "Prenom:" . $_REQUEST["prenom"];

?>

3.2 Remarques

  1. Pour des raisons de sécurité il est fortement recommandé de toujours « echapper » les données reçues des utilisateurs. La fonction htmlspecialchars est utilisée dans ce cadre. Exemple: htmlspecialchars ($_POST["nom"]) plutôt que ($_POST["nom"].
  2. Utiliser la fonction empty pour tester que le formulaire est bien soumis ou qu'un champs particulier est rempli avec une valeur non nulle.

4 Les liens

Il est possible de transmettre des données d'un script à un autre en utilisant les liens à la place des formulaires. Lorsque l'utilisateur clique sur un lien pour accéder à un script il envoie également l'ensemble des informations contenues dans ce lien au script.

4.1 Syntaxe de transmission

Les variables à transmettre sont séparées de l'URL du lien par le caractère point d'interrogation « ? ». Le caractère & permet de séparer les variables entre elles.

Exemple:

<a href= "../inserer.php?nom=Diop&prenom=moussa&age=10">Inserer </a>

4.2 Récupération des données

Les données sont transmises via l'URL. Le tableau associatif _GET est donc utilisé pour la récupération des données transmises.

Exemple:

<a href= "../inserer.php?nom=Diop">Inserer </a> <?echo "Nom:" . $_GET["nom"] . "<br />";?>

5 Les sessions

Problème: Comment partager une dizaine de variables et d'objets contenant les informations sur le visiteur entre les pages php d'un espace membre?

Solution avec liens et formulaires: Chaque lien d'une page vers une autre sera de la forme:

<a href=»pageX.php?var1=aaa&var2=bbb&var3=ccc...»

Chaque formulaire d'une page vers une autre aura un champs de type hidden par variable.

Solution avec session ou cookies: Les données sont enregistrées une seule fois et sont disponibles automatiquement pour toutes les pages. L'utilisation de cookies pose néanmoins quelques problèmes:

  • le client peut refuser d'activer les cookies et dans ce cas l'application ne fonctionne plus.
  • Manipulation et usurpation des données disponibles sur la machine cliente.

5.1 utilisation des sessions

Les sessions sont utilisées pour:

  • Reconnaître un visiteur tout au long de sa navigation,
  • Gérer les achats d'un visiteur,
  • Rendre de manière générale des informations disponibles dans plusieurs pages,
  • ...

5.2 Comment ça marche?

Supposons que deux scripts B et C partagent des données initialisées par le script A.

  1. Étape 1: A attribue au visiteur un identifiant unique. Par exemple 123
  2. Étape 2: A enregistre les données du visiteur dans un fichier du serveur en utilisant l'identifiant
  3. Étape 3: Pour lire les informations le concernant les pages B et C envoient au serveur l'identifiant du visiteur par cookies ou via l'URL.
  4. Étape 4: Le serveur envoie à B et C les données relatives à l'identifiant récupéré.

5.3 Fonctions PHP et gestion des sessions

  1. session_start: initialisation de la session. A son appel PHP essaie alors de lire l'identifiant fourni par l'utilisateur (cookies, url). S'il trouve l'identifiant il va chercher le fichier correspondant et met à disposition les informations sauvegardées dans le tableau associatif $_SESSION[]. Si aucun identifiant n'est disponible un nouvel identifiant est créé pour le nouveau visiteur.
  2. Enregistrement d'une variable dans la session : $_SESSION["nomvariable"]=valeur. La variable $nomvariable est alors enregistrée dans la session en cours et est ainsi disponible par l'utilisation de $_SESSION["nomvariable"].
  3. Suppression d'une variable dans la session : unset($_SESSION["nomvariable"]) détruit la variable $nomvariable de la session en cours. session_destroy() détruit les données de session et ferme la session en cours.

5.4 Cas pratiques

<?php

//script A

session_start();

$annee=2010;

$mois=10;

$_SESSION["annee"]=$annee;

$_SESSION["mois"]=$mois;

?>

<a href="scriptB.php">B</a>

<a href="scriptC.php">C</a>

<?php

//script B

session_start();

if ( isset( $_SESSION['annee'] ) )

{

$annee=$_SESSION["annee"];

echo "an=$annee";

}

if (isset( $_SESSION['mois'])){

$mois=$_SESSION["mois"];

echo "mois=$mois";

}

$annee=2011;

$_SESSION["annee"]=$annee;

Unset($_SESSION["mois"]);

?>

<a href="scriptA.php">A</a>

<a href="scriptC.php">C</a>

<?php

session_start();

if (isset( $_SESSION['annee'] ) )

{

$annee=$_SESSION["annee"];

echo "an=$annee";

}

if (isset( $_SESSION['mois'] ) ) {

$mois=$_SESSION["mois"];

echo "mois=$mois";

}

else

echo "mois inexistant";

?>

<a href="scriptA.php">A</a>

<a href="scriptB.php">B</a>

5.5 Remarque

Comme pour les formulaires et les liens  il est recommandé de réaliser des tests d'existence avec isset des variables avant leur utilisation.