Plan du site  
pixel
pixel

Articles - Étudiants SUPINFO

La transmission de données en PHP

Par Quentin MICHALET Publié le 29/09/2016 à 19:07:14 Noter cet article:
(0 votes)
Avis favorable du comité de lecture

Transmission de données via l'URL

URL avec paramètres

Une URL (Uniform Ressource Location) est une adresse qui permet d’accéder à une page web. On peut ajouter des paramètres (que l’on veut faire passer à la page) à la fin de l’adresse : - Les paramètres sont séparés de l’adresse par un point d’interrogation ? - Les paramètres transmis sont de la forme nom du paramètre = valeur du paramètres - les paramètres sont séparés entre eux par le symbole &

Exemple :

Remarque 1 : Une URL est limitée à 256 caractères, on ne peut donc pas transmettre énormément de données.

Remarque 2 : Une URL est très facilement modifiable par son utilisateur, il faudra donc vérifier la validité des données transmises (cf chap3.)

Créer un lien avec paramètres

Rappel : Un lien est réalisé grâce à la balise HTML <a>…</a> et à son attribut ‘href’ qui a pour valeur l’URL du lien. Pour passer les paramètres au lien, Il suffit de donner à l’attribut ‘href’ la valeur de l’URL (avec la partie adresse mais aussi la partie donnée). ATTENTION, il y a une petite différence d’écriture, dans l’URL du lien, les & sont remplacés par &amp.

Récupérer les paramètres de l'URL

La page à qui est adressée les paramètres va automatiquement créer un array associatif du nom de $_GET. C’est un array associatif dont les clés auront les noms des données que l’on a passées dans l’URL. De plus, à chaque clé sera associée la valeur de la donnée portant le même nom.

Maintenant que l’on sait ou sont les données passées dans l’URL, on peut les exploiter.

Ex : on écrit le code suivant sur la page correspondant au lien (page1.php en l’occurrence).

Transmission de données via les formulaires

Méthode de transmission des données

Les formulaires sont les principaux moyens de récupérer des informations sur un site web. La création des différents formulaires est expliquée en détail dans le document "Les principales balises du XHTML.

Pour rappel :

Un formulaire se met entre les balises <form> et </form>

L’attribut ‘action’ de la balise <form> indique la page de destination des données.

L’attribut ‘méthod : de la balise <form> indique par quel moyen les données sont envoyées à la page de destination.

L’attribut ‘method’ de la balise <form> peut prendre 2 valeurs :

Si method="get" : Les données sont envoyées via l’URL et on peut y accéder grâce au array associatif $_GET (dont nous avons vu le fonctionnement au chapitre 1)

Si method="post" : Les données sont envoyées via le canal normal et on peut y accéder grâce au array associatif $_POST (qui fonctionne suivant le même principe que $_GET).

Remarque : On utilise presque toujours la méthode post pour l’envoi des données d’un formulaire.

Les petites zone de texte

Une page qui reçoit des données issues d’une petite zone de texte par la méthode post, génère une variable :

Cette variable contiendra ce qui a été saisi dans la petite zone de texte.

Exemple :

Les grandes zone de texte

Une page qui reçoit des données issues d’une grande zone de texte par la méthode post, génère une variable :

Cette variable contiendra ce qui a été saisi dans la grande zone de texte.

Exemple :

Les listes déroulantes

Une page qui reçoit des données issues d’une liste déroulante par la méthode post, génère une variable :

Cette variable aura pour valeur celle de l’attribut ‘value’ de l’option choisie dans la liste déroulante.

Exemple :

Les cases à cocher

Une page qui reçoit des données issues d’une case à cocher par la méthode post, génère une variable :

Si la case n’a pas été cochée, aucune variable n’est générée. Si la case a été cochée, la variable est générée avec la valeur ‘on’ .On peut cocher autant de case que l’on veut.

Exemple :

Les zones d’options (bouton radio)

Une page qui reçoit des données issues d’une zone d’option par la méthode post, les met dans la variable :

Cette variable aura pour valeur celle de l’attribut ‘value’ de l’option choisie dans la zone d’option.

Exemple :

Vérifier les données transmises

Tester la présence d’un paramètre

Avant d’utiliser une variable qui n’a pas été définie dans la page courante, il faut vérifier qu’on l’a bien reçu. En effet si on fait appel à une variable alors qu’elle n’existe pas, le programme plantera lamentablement. La fonction isset permet de tester l’existence d’une variable. Elle prend comme paramètre le nom de la variable dont on veut vérifier l’existence et renvoie un booléen égal à ‘true’ si la variable existe (et égal à ‘false’ si elle n’existe pas).

Exemple :

Vérifier la conformité d’une valeur

Lorsque que l’on récupère une variable venant de l’extérieur, elle n’a peut être pas le type que l’on attend. Par exemple, dans un formulaire où l’on demande l’âge, rien n’empêche de répondre par du texte. Cela risque d’être problématique lors du traitement de cette variable. Pour remédier à cela, on peut effectuer du transtypage, c'est-à-dire que l’on va convertir la variable reçue dans le type que l’on souhaite. Pour modifier le type d’une variable, on écrit devant la variable et entre parenthèses le nom du nouveau type (int, bool, double, string, array…).

Exemple :

Visibilité des variables

Une variable n’est pas forcément visible à tous les points d’un programme. Par exemple, une variable déclarée dans le programme principal n’est pas accessible à une fonction si elle n’a pas été passée en paramètre à la fonction. Il y a 3 niveaux de visibilité des variables :

- Les variables superglobales : Ce sont des arrays générés automatiquement par PHP (comme $_GET et $_POST). Elles sont visibles de partout dans le programme (même à l’intérieur d’une fonction). A une exception prés, leur nom commence par un underscore (_) et elles sont écrites en majuscule.

- Les variables globales : Ce sont toutes les variables, tableaux et constantes que nous créons dans le programme principal. (Elles ne sont pas visibles dans les fonctions si on ne les passe pas en paramètre).

- Les variables locales : Ce sont les variables déclarées dans les fonctions. Elles ne sont accessibles que dans la fonction, le programme ne peut pas agir sur elles, d’ailleurs, elles sont automatiques supprimées de la mémoire à la fin de la fonction. Attention, ceci n’est valable que pour les variables déclarées normalement dans la fonction (cf remarque ci-dessous).

Remarque : Portée des variables déclarées dans une fonction. Dans une fonction, un variable déclarée : - normalement (sans rien devant son nom) est par défaut une variable locale. Elle n’est donc visible que dans la fonction et est supprimée à la fin de l’exécution de la fonction. - avec le mot clé ‘global’ devant son nom, est considérée comme global. Elle est donc visible de partout dans le programme et n’est pas supprimée à la fin de l’exécution de la fonction. - avec le mot clé ‘static’ devant son nom, n’est accessible qu’à l’intérieur de la fonction mais elle n’est pas supprimée à la fin de son exécution. Elle sera donc à nouveau disponible lors du prochain appel de la fonction.

Transmission de données via les sessions

- Grâce aux variables super globales $_GET et $_POST, on peut transmettre des données à une page, mais celles-ci ne seront accessibles que de cette page là.

Dès que l’on va quitter cette page les données seront oubliées. Si on veut qu’elles soient accessibles de toutes les pages, il faut utiliser un système de session.

- Une session est en fait un fichier stocké sur le serveur et dans lequel on sauvegarde des données.

- Les informations de session du serveur sont accessibles au client grâce à un numéro hexadécimal unique (I.D. de session) attribué au client lors de la création de la session.

- Une fois qu’une session est générée, on peut y enregistrer toutes les données que l’on désire. La gestion des données de sessions se fait à l’aide de l’array super global $_SESSION.

- Une session a une durée de vie limitée, elle est détruite automatiquement après un certain temps d’inactivité (en général le timeout est d’une vingtaine de minutes).

- Une page fait appel au système de session grâce à la fonction session_start().

Celle-ci ouvre la session existante ou si aucune session n’est présente, en crée une et lui attribut un ID de session. ATTENTION, la fonction session_start doit être appelée avant toute écriture de code HTML.

- Une session est supprimée à l’aide de la fonction session_destroy(). Celle-ci est automatiquement appelée à la fin du timeout..

Exemple d’utilisation de sessions :

- Dans les sites de ventes en ligne, lorsqu’on met des articles dans le panier et que l’on veut garder en mémoire le contenu du panier d’une page à l’autre.

- Lorsque qu’un site demande une authentification par login et mot de passe, on peut les enregistrer dans des variables de sessions afin de ne pas avoir à les demander à chaque page.

Exemple de programmation :

Transmission de données via les cookies

Présentation des cookies

Comme les sessions, les cookies sont des fichiers qui permettent de stocker des données qui seront consultables sur toutes les pages d’un site. Les cookies sont toutes fois moins évolués que les sessions :

- Ce sont des fichiers textes ne dépassant pas 4ko et ne contenant qu’une seule information à la fois.

- Ils sont stockés sur l’ordinateur du client (et non sur le serveur, ce qui était le cas pour les sessions). Chaque utilisateur de l’ordinateur peut les lire ou les modifier, il ne faut donc pas y mettre des données sensibles.

- Ils sont gérés par les navigateurs qui peuvent les refuser.

- On ne peut pas avoir plus de 20 cookies par nom de domaine.  Comme les sessions, ils ont une durée de vie limitée.

Génération d'un cookie

La création d'un cookie repose sur l'envoi d'entêtes HTTP au navigateur du client au moyen de la fonction setcookie(). Cela sous-entend qu'il faudra l'appeler avant tout envoi de données au navigateur, il ne faut donc jamais placer de code HTML avant la fonction setcookie().

La fonction setcookie() peut prendre jusqu'à 7 paramètres. Seul le premier est obligatoire car il définit le nom du cookie. Elle renvoie un booléen : true en cas de succès et false si échec.

Signature de la fonction setcookies :

En général, on utilise la fonction setcookie() avec seulement les 3 premiers paramètres .

Exemple de génération de cookies :

Lecture d'un cookie

On accède aux cookies grâce à l’array superglobal $_COOKIE. Il suffit d’écrire le nom du cookie entre les crochets : $_COOKIE[‘ nom_du_cookie ’].

Exemple : Ici on va lire les cookies que l’on a crée dans l’exemple précédent.

Suppresion d'un cookie

Pour supprimer un cookie, il suffit de générer un cookie de même nom mais sans valeur avec la fonction setcookie(), puis de lui appliquer la fonction unset().

Exemple : Suppression du cookie ‘age’ de l’exemple précédent.

Transmission de données via les fichiers

Ouverture et fermeture d'un fichier

Avant de lire ou d’écrire dans un fichier, il faut d’abord l’ouvrir avec la fonction fopen. Une fois que l’on a fini d’utiliser le fichier, on le ferme avec la fonction fclose.

- La fonction fopen renvoie une information (appelée descripteur de fichier) qu’il faut stoker dans une variable (on en aura besoin pour effectuer des opérations sur le fichier) et prend 4 paramètres dont 2 sont obligatoires.

Les 2 paramètres obligatoires sont (dans l’ordre) :

- Le chemin et le nom du fichier.

- le mode d’ouverture.

La fonction fclose prend comme paramètre le descripteur de fichier renvoyé par fopen.

Exemple d’ouverture et de fermeture de fichier :

Ecriture dans un fichier

Pour écrire dans un fichier, on utilise la fonction fwrite (ou son alias fputs). Elle renvoie le nombre d’octets écrits (ou false si l’écriture a échouée) et prend 3 paramètres dont 2 sont obligatoires.

Les 2 paramètres obligatoires sont (dans l’ordre) :

- Le descripteur de fichier renvoyé par fopen.

- La chaîne à insérer dans le fichier.

Le 3ième paramètre (optionnel) est le nombre maximal de caractères

Exemples :

Lecture d'un fichier

Lecture caractère par caractère avec la fonction fgetc :

La fonction fgetc prend en paramètre le descripteur de fichier, lit un caractère et le renvoie comme valeur de retour. Lors du prochain appel, la fonction lira le caractère suivant et ainsi de suite. Lorsqu’il n’y a plus de caractères, elle renvoie la valeur false.

Exemple :

le fichier presentation .txt contient le texte suivant : Bonjour tout le monde.

Lecture ligne par ligne avec la fonction fgets :

Même fonctionnement que fgetc mais renvoie une ligne à la place d’un caractère.

La fonction fgets prend en paramètre le descripteur de fichier, lit une ligne renvoie la chaîne de carctères correspondant à cette ligne comme valeur de retour. Lors du prochain appel, la fonction lira la ligne suivante et ainsi de suite. Lorsqu’il n’y a plus de ligne, elle renvoie la valeur false.

Exemple :

- Lecture d’un fichier en entier avec la fonction fread :

La fonction read prend en paramètre le descripteur de fichier et le nombre d’octets que l’on veut lire. Elle renvoie la chaine de caractères correspondant au contenu du fichier dans la limite du nombre d’octet spécifié en paramètre. Si la chaine retournée est plus courte que ce qui a été demandé, c’est que la fin du fichier a été atteinte.

Exemple :

Position dans le fichier

- Placer le pointeur en un point du fichier avec fseek :

La fonction fseek prend en paramètre le descripteur de fichier et la position à laquelle on veut placer le pointeur.

- Connaitre la position du pointeur de fichier avec ftell :

La fonction ftell prend en paramètre le descripteur de fichier et la position courante du pointeur.

Exemple :

Permissions et droits d'accès d'un fichier

Pour pouvoir créer ou modifier un fichier, il faut y être autorisé. Cette autorisation est donnée par le CHMOD du fichier ou du répertoire.

Sous Windows le CHMOD n’existe pas mais comme la plupart des serveurs sont sous Linux, il faudra y prêter attention.

Le CHMOD est un nombre à 3 chiffres (de 0 à 7) que l’on attribue au fichier.

- Le premier chiffre représente les doits du propriétaire. Souvent, il a tous les droit et sa valeur et 7.

- Le deuxième chiffre représente les droits du groupe d’utilisateurs auquel le fichier appartient.

- Le troisième chiffre représente les permissions publiques, c’est ce chiffre que l’on doit mettre à 7 si on veut pouvoir faire toutes les manipulations avec PHP.

Pour être tranquille, il fait que le CHMOD du fichier soit 777.

La modification du CHMOD d’un fichier peut se faire l’aide de logiciel tel que FileZilla (client FTP → logiciel permettant de déposer ou récupérer des fichiers sur un serveur).

Conclusion

Nous avons donc les détails des différentes façons de transmettre les données en PHP avec des exemples précis et détaillés.

A propos de SUPINFO | Contacts & adresses | Enseigner à SUPINFO | Presse | Conditions d'utilisation & Copyright | Respect de la vie privée | Investir
Logo de la société Cisco, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société IBM, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sun-Oracle, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Apple, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sybase, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Novell, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Intel, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Accenture, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société SAP, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Prometric, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Toeic, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo du IT Academy Program par Microsoft, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management

SUPINFO International University
Ecole d'Informatique - IT School
École Supérieure d'Informatique de Paris, leader en France
La Grande Ecole de l'informatique, du numérique et du management
Fondée en 1965, reconnue par l'État. Titre Bac+5 certifié au niveau I.
SUPINFO International University is globally operated by EDUCINVEST Belgium - Avenue Louise, 534 - 1050 Brussels