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 |
Table des matières
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 :
- 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
- 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
- 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"].
- 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.
- Étape 1: A attribue au visiteur un identifiant unique. Par exemple 123
- Étape 2: A enregistre les données du visiteur dans un fichier du serveur en utilisant l'identifiant
- É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.
- É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
- 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.
- 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"].
- 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> |