Techniques Internet de Base 2006-2007 Licence 2 (Info, Maths, PC/PA) Université Jean Monnet Ruggero G. PENSA

Slides:



Advertisements
Présentations similaires
Création d'un formulaire Cliquer ici Taper un nom Choisir POST.
Advertisements

Novembre 2005 – Michel Desconnets PHP : théorie Objectif : introduire les concepts globaux permettant d'aborder la programmation en PHP.
Base de Données / MCD Introduction en utilisant un SGBD simple (Access) Quinio Université Paris Ouest2010 Quinio.
Conception de Site Webs dynamiques Cours 6
Chapitre 3 Les Formulaires en PHP
Exposé de Système - Informatique et Réseau
Personal Home Page / Hypertext Processor (PHP)
HTML Les types de balises
Design Pattern MVC En PHP5.
TP 3-4 BD21.
Formulaire HTML Introduction. Définition de formulaire.
11:16:331 Programmation Web Programmation Web : Formulaires HTML Jérôme CUTRONA
Créer en réseau une image de disque avec Ghost Corporate
Cours n°3 Les formulaires
La balise <FORM>:
Common Gateway Interface
Oct.-2000DESS IIDEE © B. BAH 1 ASP Caractéristiques dun fichier ASP Son extension : « *.asp » La balise: Son indépendance vis à vis de toute plate–forme,
LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet
Aide-mémoire – FORMULAIRE Web DA/DT
Techniques Internet de Base Licence 2 (Info, Maths, PC/PA) Université Jean Monnet Ruggero G. PENSA
Techniques Internet de Base Licence 2 (Info, Maths, PC/PA) Université Jean Monnet Ruggero G. PENSA
Le langage PHP 5.
Le langage ASP Les variables d'environnement HTTP avec Request.
Les instructions PHP pour l'accès à une base de données MySql
Biologie – Biochimie - Chimie
28 novembre 2012 Grégory Petit
Publispostage Menu Outils / Lettres et publipostage
Introduction au langage PHP Réfs : Chap 3 p 49. Présentation PHP (Hypertext PreProcessor) est un langage de développement Web créé en 1994 par Rasmus.
ACTIVITE N°1: Identifier, justifier, installer le matériel, vérifier Rendre accessible larrière de la machine « revendeur » sans la démonter Identification.
Maîtriser le langage HTML Les Formulaires. Dans cette section on verra comment diviser un formulaire en plusieurs blocs principaux avec un titre pour.
Abderrahmane Bouarissa Damien Burglin Arnaud Sansig
Manipulation de formulaires en Javascript
Le langage ASP Les formulaires avec Request. Les formulaires sont employés pour transmettre des informations saisies par un client à une application Web.
Le formulaire Les chaînes de requêtes. Les chaînes de requêtes (QueryStrings) correspondent à des informations associées à l'adresse URL avec un point.
PHP Géant Aurélien. PHP (Hypertext Preprocessor) Langage de scripts libre Permet produire des pages Web dynamiques dispose d'un très grand nombre d'API(Application.
JSP (Java Server Pages)
Initiation au web dynamique
PHP 2° PARTIE : FONCTIONS ET FORMULAIRE
Biologie – Biochimie - Chimie
JavaScript Nécessaire Web.
PHP 5° PARTIE : LES COOKIES
Cours de programmation web
 Objet window, la fenêtre du navigateur
T ECHNOLOGIES WEB CHAPITRE IV : L E LANGAGE PHP 1 Mme Amani JARRAYA & Mohamed MOHSEN.
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
http 1.1.  connexion persistante Browser Mozilla Firefox Adresse ip.
Architecture d’une application WEB Statique:
Bureautique M1 Publipostage.
Les structures conditionnelles en PHP
Abderrahmane Bouarissa Damien Burglin Arnaud Sansig
PHP 6° PARTIE : LES SESSIONS 1.Introduction 2.Identificateur de session 3.Variables de session 4.Client / Serveur 5.Principe 6.Ouverture de session 7.Enregistrement.
 Formulaires HTML : traiter les entrées utilisateur
Initiation au JavaScript
Deug 11 Systèmes d ’Information : 5a Michel de Rougemont Université Paris II Les Formulaires.
 Fonctions diverses, scripts PHP Variables de session Les sessions sous PHP permettent de conserver des données d'un utilisateur coté serveur, lors de.
Créer en réseau une image de disque avec Ghost Corporate installer la station modèle installer GhostCast Server sur le poste serveur (sur lequel sera enregistrée.
HTML Création et mise en page de formulaire Cours 3.
Comprendre le SGBDR Microsoft Access – partie 2
CPI/BTS 2 Programmation Web Les sites dynamiques Prog Web CPI/BTS2 – M. Dravet – 02/10/2003 Dernière modification: 02/10/2003.
05/02/98WEB ESNIG Création module « Frame » Oracle Designer/2000 & Oracle Web Server.
HTML Création et mise en page de formulaire
Suivi simplifié d’activité
TWP Toolkit Formation 21/10/2009.
FORMULAIRES FOMULAIRE Permet à l’utilisateur d’entrer des renseignements le concernant. Utilisation –Inscription sur un site –Mise à jour d’une base.
Nouveaux éléments des formulaires dans HTML5 Ref:
INF2005– Programmation web– A. Obaid Les cartes. INF2005– Programmation web– A. Obaid Images cliquables Outil permettant d'effectuer des liens à partir.
APP-TSWD Apprentissage Par Problèmes Techniques des Sites Web Dynamiques Licence Professionnelle FNEPI Valérie Bellynck, Benjamin Brichet-Billet, Mazen.
FACTORY systemes Module 2 Section 1 Page 2-3 Installation d’Industrial SQL FORMATION InSQL 7.0.
APP-TSWD Apprentissage Par Problèmes Techniques des Sites Web Dynamiques Licence Professionnelle FNEPI Valérie Bellynck, Benjamin Brichet-Billet, Mazen.
1 Programmation Web Programmation WAMP/LAMP Premiers principes.
Transcription de la présentation:

Techniques Internet de Base Licence 2 (Info, Maths, PC/PA) Université Jean Monnet Ruggero G. PENSA

PHP - Formulaires

Formulaires et PHP Lorsque l'utilisateur clique sur le bouton d'envoi, une requête HTTP est envoyée au serveur à destination du script désigné par l'attribut action de l'élément La requête contient les associations entre les noms des champs et leur valeur Les associations se trouvent : dans l'en-tête HTTP si la méthode POST est utilisée dans l'URL s'il s'agit de la méthode GET Pour envoyer les données au même fichier on peut utiliser la variable $_SERVER["PHP_SELF"] Exemple : >

Récupération des valeurs uniques Les valeurs uniques proviennent des champs de formulaire dans lesquels l'utilisateur peut entrer qu'une valeur Depuis PHP 4.1, ces valeurs sont contenues sur le serveur dans des tableaux associatifs dits superglobaux appelés $_POST et $_GET (selon la méthode choisie) Les clés de ces tableaux sont les noms associés aux champs par l'attribut name Les valeurs associées aux clés sont les informations saisies par l'utilisateur

Récupération des valeurs POST Il est toujours important de vérifier l'existence des variables On peut utiliser la fonction isset() Exemple : <?php if (isset($_POST["nomchamp"]) { $valeurchamp=$_POST["nomchamp"]; } echo "La valeur du champ est ". $valeurchamp; ?>

Exemple : récupération de valeurs 1 Formulaire traité par PHP " method="post" enctype="application/x-www-form-urlencoded"> Infos Nom : Débutant : Initié :

Exemple : récupération de valeurs 2 <?php if(isset($_POST["nom"]) && isset($_POST["niveau"])) { echo " Bonjour ". $_POST["nom"]. " vous êtes ".$_POST["niveau"]." en PHP "; } ?>

Récupération des valeurs GET On doit toujours vérifier l'existence des variables Exemple : <?php if (isset($_GET["nomchamp"]) { $valeurchamp=$_GET["nomchamp"]; } echo "La valeur du champ est ". $valeurchamp; ?>

Utilisation de la méthode GET - 1 On considère l'exemple suivant : Cliquez ici Il s'agit d'un fichier HTML qui contient un lien au fichier exempleform.php avec deux paramètres : nom = Toto niveau = Débutant Si exempleform.php contient le code de l'exemple précédent, les paramètres ne sont pas reconnus

Utilisation de la méthode GET - 2 Il faut utiliser le tableau $_GET : <?php if(isset($_GET["nom"]) && isset($_GET["niveau"])) { echo " Bonjour ". $_GET["nom"]. " vous êtes ".$_GET["niveau"]." en PHP "; } ?> En général il faut essayer d'utiliser la méthode GET le moins souvent possible Pour les liens cela reste le moyen plus rapide pour accéder aux fichiers PHP en envoyant des paramètres

Récupération des valeurs multiples Certains champs de formulaire peuvent permettre aux visiteurs de saisir plusieurs valeurs sous un même composant Groupe de cases à cocher ayant le même attribut name Groupe de boutons radio ayant le même attribut name Liste de sélection dans laquelle l'attribut multiple est défini Dans ces cas, le serveur récupère un tableau

Récuperation des valeurs Dans certains cas il faut faire suivre le nom du composant de crochets : Exemple : Bleu : Blanc : Pour récupérer les valeurs, on utilise les variables POST comme des tableaux à deux dimensions Exemple : $_POST["choix"][0] // contient la variable "bleu" $_POST["choix"][1] // contient la variable "blanc"

Exemple : valeurs multiples - 1 Fichier multiples.html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" " Choix multiples Recherche d'emploi: complétez la fiche Nom Prénom Age

Exemple : valeurs multiples - 2 Langues pratiquées français anglais allemand espagnol Compétences informatiques HTML PHP MySQL ASP.Net

Exemple : valeurs multiples - 3 Fichiers multiples.php <?php if(isset($_POST["ident"]) && isset($_POST["lang"]) && isset($_POST["competent"])) { echo " Récapitulatif de votre fiche d'information personnelle "; $nom=$_POST["ident"][0]; $prenom=$_POST["ident"][1]; $age=$_POST["ident"][2]; $lang = $_POST["lang"]; $competent=$_POST["competent"]; echo"Vous êtes : $prenom ", stripslashes($nom)," Vous avez $age ans "; echo " Vous parlez :"; echo " "; foreach($lang as $valeur) { echo " $valeur "; } echo " ";

Exemple : valeurs multiples - 4 echo "Vous avez des compétences informatiques en :"; echo " "; foreach($competent as $valeur) { echo " $valeur "; } echo " "; } else { echo" " ; echo "alert('Complétez tous les champs');"; echo "window.history.back();"; echo " "; } ?>

Gérér les boutons d'envoi multiples L'utilisation de plusieurs boutons submit dans un même formulaire permet de déclencher des actions différentes en fonction du bouton activé par l'utilisateur Les boutons doivent avoir le même attribut name, mais des valeurs différentes de l'attribut value Exemple : Côté serveur on récupère la valeur grâce à la variable $_POST["calcul"]

Transfert de fichier vers le serveur L'inclusion d'un élément HTML permet de transférer non pas une information mais un fichier Problèmes de sécurité : Il faut vérifier l'extension du fichier On utilise l'attribut ACCEPT de la balise input : Il faut limiter la taille du fichier à travers l'option upload_max_filesize du fichier php.ini à travers le contrôle caché : qui spécifie la taille maximale en octets

Fonctionnement Une fois le fichier sélectionné, un clic sur le bouton submit provoque l'envoi du fichier au serveur Le fichier est copié sur un répertoire tampon défini par la directive "upload_tmp_dir" du fichier php.ini Le fichier est automatiquement effacé lors de la déconnection du client Le fichier est enregistré sous un nom différent

Récupération du fichier Côté serveur, on dispose du tableau associatif $_FILES, qui contient les informations nécessaires au traitement du fichier transféré Pour un élément nous avons les informations suivantes : $_FILES["fich"]["name"] : nom du fichier sur le poste client $_FILES["fich"]["type"] : type MIME initial du fichier $_FILES["fich"]["size"] : taille réelle en octet du fichier transféré $_FILES["fich"]["tmp_name"] : donne le nom temporaire que le serveur attribue automatiquement au fichier dans le répértoire tampon $_FILES["fich"]["error"] : donne le code d'erreur éventuel associé au fichier

Codes d'erreur Les valeurs possibles de la variable $_FILES["inputname"]["error"] sont : 0 (ou UPLOAD_ERR_OK ) : indique que le transfert est bien réalisé 1 (ou UPLOAD_ERR_INI_SIZE ) : indique que la taille du fichier est supérieure à celle définie dans le fichier php.ini 2 (ou UPLOAD_ERR_FORM_SIZE ) : indique que la taille est supérieure à celle définie dans le champ caché MAX_FILE_SIZE 3 (ou UPLOAD_ERR_PARTIAL ) : indique que le fichier n'a été que partiellement téléchargé 4 (ou UPLOAD_ERR_NOFILE ) : indique qu'aucun fichier n'a été téléchargé

Déplacement du fichier Il faut procéder à l'enregistrement et au renomage éventuel du fichier vers le serveur On utilise la fonction move_uploaded_file() : move_uploaded_file("fichier_tmp","fichier_final") La fonction retourne TRUE si l'opération est bien réalisée ( FALSE dans le contraire) Exemple (dans un fichier exemple.php) : move_uploaded_file($_FILES["fich"]["tmp_name"], "monimage.jpg"); le fichier est transféré dans le répertoire du fichier exemple.php

Exemple de transfer de fichier - 1 Transfert de fichier method="post" enctype="multipart/form-data" > Transfert de fichier Fichier Clic!

Exemple de transfer de fichier - 2 <?php if(isset($_FILES['fich'])) { echo "Taille maximale autorisée :",$_POST["MAX_FILE_SIZE"]," octets "; echo " Clés et valeurs du tableau \$_FILES "; foreach($_FILES["fich"] as $cle => $valeur) { echo "clé : $cle valeur : $valeur "; } $result=move_uploaded_file($_FILES["fich"]["tmp_name"], "monfichier.jpg"); if($result==TRUE) {echo " Le transfert est réalisé ! ";} else {echo " Erreur de transfert n°",$_FILES["fich"]["error"];} } ?>

PHP - Fichiers

Les fichiers Pour sauvegarder des information sur le serveur on dispose de deux moyens : les bases de données (MySQL, MS Server, Oracle...) les fichiers (texte, XML...) Avantage des bases de données : Création/recherche simple Récupération des valeurs facile Gestion avancée des droits d'accès Avantage des fichiers : Ils nécessitent pas d'un module supplémentaire Backup/transfert facile Accès facile On s'intéressera aux fichiers texte (.txt)

Création d'un fichier Pour créer un fichier vide on utilise la fonction touch() : if (!file_exists("monfichier.txt")) { touch("monfichier.txt",time()); } Si le file n'existe pas (la fonction file_exists() retourne FALSE), on crée un fichier vide

Ouverture d'un fichier Avant de réaliser des opération de lecture ou d'écriture sur un fichier, il faut l'ouvrir explicitement On peut ouvrir un fichier avec différents modes d'accès : lecture uniquement écriture uniquement lecture et écriture On utilise la fonction fopen();

La fonction fopen() Syntaxe : $id_file=fopen(nomfichier,mode[,recursif]) Paramètres : nomfichier : chaîne de caractères contenant le nom du fichier à ouvrir (chemin + nom du fichier) mode : chaîne de caractères contenant le mode d'accès recursif (facultatif ) : si sa valeur est TRUE la recherche du fichier est étendue à tous les sous-répertoires du chemin indiqué dans le premier paramètre Exemples : $f = fopen("../moncv/formation.txt", "r", FALSE) $f2 = fopen(" "w", FALSE) $f3 = fopen(" ftp://ftp.monsite.fr/moncv/formation.txt", "a")

Mode d'accès Valeurs du paramètre mode : "r" : lecture seule (la lecture commence au début du fichier) "r+" : lecture et écriture (au début du fichier) "w" : écriture seule (l'écriture commence au début du fichier, si le fichier n'existe pas, il est créé automatiquement) "w+" : lecture et écriture (au début du fichier, si le fichier n'existe pas, il est créé automatiquement) "a" : écriture seule (les données sont écrites en fin de fichier, si le fichier n'existe pas, il est créé automatiquement) "a+" : écriture et lecture (les données sont écrites en fin de fichier, la lecture commence au début du fichier, si le fichier n'existe pas, il est créé automatiquement)

Identifiant de fichier La valeur retourné par la fonction fopen est un identifiant de fichier (type resource ), qui doit être utilisé comme premier paramètre des fonction de lecture/écriture Le nom du fichier n'est utilisé que lors de son ouverture Si une erreur se produit lors de l'ouverture, fopen retourne FALSE Exemple : $id_file=fopen("monfichier.txt","a"); if (!$id_file) echo "Erreur d'accès au fichier";

Fermeture d'un fichier Après avoir ouvert un fichier pour y effectuer des opérations de lecture ou d'écriture, il faut impérativement le fermer L'opération de fermeture est réalisée à l'aide de la fonction fclose() : Exemple : if (!fclose($id_file)) echo "Erreur durant la fermeture du fichier";

Verrouillage des fichiers Si plusieurs utilisateurs accèdent au même fichier et y effectuent simultanément des opérations de lecture ou d'écriture, le fichier risque de devenir inutilisable Il est essentiel que les scripts qui y accèdent définissent une priorité d'accès au premier script effectuant une opération sur le fichier Il faut empêcher les autres scripts d'accéder au fichier et d'y faire des modifications tant que le fichier n'est pas fermé On dispose de la fonction flock() Syntaxe : flock($id_file, mode);

Valeurs du paramètre mode Le paramètre mode de la fonction flock() est un entier qui définit le mode de verrouillage du fichier : flock($id_file, 1) ou flock($id_file, LOCK_SH) : bloque l'écriture dans le fichier mais laisse le libre accès en lecture à tous les utilisateurs flock($id_file, 2) ou flock($id_file, LOCK_EX) : bloque l'écriture et la lecture dans le fichier flock($id_file, 3) ou flock($id_file, LOCK_UN) : libère le verrou installé précédemment (ne pas oublier cette fonction à la fin des opérations de lecture et écriture)

Exemple :... $id_file=fopen("monfichier.txt","w+"); flock($id_file,LOCK_SH); //... //opérations de lecture et/ou d'écriture //... flock($id_file,LOCK_UN); fclose($id_file);...

Ecriture dans un fichier On utilise les fonctions fwrite et fputs (alias l'une de l'autre) Syntaxe : fwrite($id_file,chaîne[,max_car]); fputs($id_file,chaîne[,max_car]); Paramètres : $id_file : identifiant du fichier chaîne : chaîne de caractères à écrire dans le fichier max_car (facultatif) : s'il est définit, seuls les max_car premiers caractères de la chaîne sont écris dans le fichier

Exemple : compteur de visites - 1 Compteur de visites <?php if(file_exists("compteur.txt")) if($id_file=fopen("compteur.txt","r")) { flock($id_file,1); $nb=fread($id_file,10); $nb++; fclose($id_file); $id_file=fopen("compteur.txt","w"); fwrite($id_file,$nb); flock($id_file,3); fclose($id_file); } else {echo " Fichier introuvable"; }

Exemple : compteur de visites - 2 else { $nb=10000; $id_file=fopen("compteur.txt","w"); fwrite($id_file,$nb); fclose($id_file); } echo " Voici déja $nb visites sur le site "; ?>

Formatage des données Pour enregistrer plusieurs valeurs différents sur un même fichier, il faut un moyen de séparer les données sous forme de paquets Chaque paquet occupe une ligne du fichier Chaque donnée est séparée des autres par un caractère quelconque (exemple : tabulation, point-virgule...) Exemple : fwrite($id_file, $nom. ";". $prenom. ";". "$date". "\n");

Exemple : fichiers et formulaires - 1 Les fichiers PHP " method="post" > Enregistrez vos informations personnelles Votre nom Votre prénom

Exemple : fichiers et formulaires - 2 <?php if($_POST['nom']!="" && $_POST['prenom']!="") { $nom=$_POST['nom']; $prenom=$_POST['prenom']; echo " Merci $prenom $nom de votre visite "; $date=time(); if($id_file=fopen("noms.txt","a")) { flock($id_file,2); fwrite($id_file,$prenom.";".$nom.";".$date."\n"); flock($id_file,3); fclose($id_file); } else { echo "Fichier inaccessible";} } else{ echo " Complétez le formulaire puis cliquez sur 'Envoi' ! ";} ?>

Lecture de fichiers Pour effectuer la lecture du fichier, il existe plusieurs méthodes, chacune étant associée à une fonction PHP spécialisée : fgets() fread() fgetc() fseek() fgetcvs() readfile() file() passthru()

Lire une ligne à la fois fonction fgets() Syntaxe : $ligne=fgets($id_file,nombre_octets); La fonction fgets lit le fichier depuis son début et retourne une chaîne de caractères d'une longueur maximale égale au paramètre nombre_octets La lecture s'arrête quand ce nombre d'octets lu est atteint, ou si le caractère "\n" est rencontré dans le fichier Exemple : $ligne=fgets($id_file,256); Pour récupérer les différentes données on peut utiliser la fonction explode(). Exemple : $tab=explode(";", $ligne);

Exemple : fgets() - 1 <?php $file="noms.txt"; //Première lecture $id_file=fopen($file,"r"); $i=1; echo " Lecture du fichier \"$file\" ligne par ligne Affichage brut de chaque ligne "; echo " \n"; while($ligne=fgets($id_file,100) ) { echo " Ligne numéro $i $ligne \n"; $i++; } fclose($id_file); echo " ";

Exemple : fgets() - 2 //Deuxième lecture $id_file=fopen($file,"r"); $i=1; echo " Lecture du fichier \"$file\" ligne par ligne Récupération de chaque donnée "; echo " \n"; echo " Numéro prenom nom date \n"; while($ligne=fgets($id_file,100) ) { $tab=explode (";",$ligne); $jour= date("j/n/Y H:i:s",$tab[2]) ; echo " $i $tab[0] $tab[1] $jour \n"; $i++; } fclose($id_file); echo " "; ?>

Lire un nombre de caractères donné Fonction fread() Syntaxe : $chaine= fread($id_file,nombre_octets); La fonction lit le fichier depuis son début et retourne à chaque appel une chaîne de caractères contenant exactement le nombre de caractères précisé dans le second paramètre, sauf si la fin du fichier est atteinte ou si le caractère "\n" est rencontré La fonction est utiles pour lire des données de taille fixe

Lire un caractère à la fois Fonction fgetc($id_file); Exemple : while($car=fgetc($id_file)) { echo "caractère ". $i. " : ". $car. "\n"; i++; }

Lire une partie d'un fichier Chaque fichier possède un pointeur de lecture et d'écriture Le pointeur est mis à jour lorsqu'une lecture ou une écriture est effectuée On peut déplacer le pointeur n'importe où dans le fichier grâce à la fonction fseek() Syntaxe : fseek($id_file, nombre_octets) la fonction déplace le pointeur à la position nombre_octets calculée à partir du début du fichier Autres fonctions : rewind($if_file) : remet le pointeur au début ftell($id_file) : retourne le nombre d'octets par rapport au début

Lecture de données formatées Fonction fgetcvs() Syntaxe : $tab = fgetcvs($id_file,nombre_octets,séparateur) La fonction lit dans le fichier identifié par $id_file au maximum le nombre de caractères précisé à l'aide du deuxième paramètre Elle retourne un tableau de chaînes de caractères, délimitées dans le fichier par la chaîne séparateur Une ligne  Un tableau La fonction fgetcvs combine l'utilisation de fgets et explode

Lecture de la totalité d'un fichier La fonction readfile("nom_fichier") affiche le contenu du fichier directement dans la page du navigateur, et retourne le nombre d'octets qui ont été lus La fonction file("nom_fichier") retourne un tableau de chaîne de caractères où chaque chaîne correspond à une ligne du fichier La fonction fpassthru($id_file) affiche le contenu du fichier directement dans la page du navigateur, mais elle nécessite l'emploi de fopen() et fclose()

Actions sur les fichiers Copier un fichier : copy("nom_fichier", "nom_copie"); Rennomer un fichier : rename("nom_actuel","nom_futur"); Effacer un fichier : unlink("nom_fichier");

Informations sur un fichier Existence d'un fichier : file_exists("nom_fichier"); Taille d'un fichier : $taille=filesize($id_file); Date du dernier accès à un fichier : $date=fileatime("nom_fichier"); Date de la dernière modification d'un fichier : $date=filemtime("nom_fichier"); Chemin complet d'un fichier : $chemin=realpath("nom_fichier"); Nom du fichier : $nom_fichier=basename("chemin_complet");

PHP – Cookies et sessions

Les cookies Les cookies sont des petits fichiers qui peuvent être écrits par un script PHP ou par d'autres langages sur l'ordinateur du visiteur Un site donné ne peut écrire que 20 cookies sur un même poste client Chaque cookie ne doit pas dépasser 4 Ko Un cookie n'est généralement accessible que par le site qui l'a écrit Les cookies sont utilisés pour le stockage d'information de petite taille (nom, code d'accès, préférences de l'utilisateur...)

Ecriture des cookies Pour écrire un cookie, il est impératif qu'aucun contenu HTML n'ait été envoyé au client avant l'écriture du cookie L'écriture d'un cookie doit précéder les instructions d'affichage ( echo...) Pour écrire un cookie on utilise la fonction setcookie() Syntaxe : setcookie(nom_cookie[, valeur, datefin, chemin, domaine, securité) Exemple : setcookie("username","Donald Duck");

La fonction setcookie() Paramètres nom_cookie : nom du cookie obéissant aux mêmes règles de nommage que le variables valeur (facultatif) : contient la valeur associé au cookie (chaîne de caractères) datefin (facultatif) : date de fin de validité du cookie chemin (facultatif) : chemin d'accès aux dossiers qui contiennent les scripts qui peuvent accéder au cookie domaine (facultatif) : nom entier du domaine à partir duquel on peut accéder au cookie securité (facultatif) : TRUE si le cookie doit être transmis par une connexion sécurisée) Exemples : setcookie("prenom","Zinedine"); setcookie("nom","Zidane",time()+86400); setcookie("CB", " ", time()+86400, "/client/paiment/", TRUE);

Cookies et tableaux Il est possible d'enregistrer plusieurs cookies ayant le même nom : setcookie("achat[art1]","livre"); setcookie("achat[art2]","CD"); setcookie("achat[art3]","vidéo"); La clé du tableau n'est pas délimitée par des guillemets !!!

Lecture de cookies Pour récupérer les valeurs des cookies on utilise le tableau $_COOKIE : $nom=$_COOKIE["nom"]; Pour récupérer les valeurs des cookies ayant le même nom : foreach($_COOKIE["achat"] as $cle=>$valeur) { echo "Cookie : ". $cle." valeur : ". $valeur; }

Les sessions HTTP ne permet pas de conserver des informations provenant d'une page pour les utiliser dans une autre page L'utilisation des sessions permet de conserver ces informations et de les réutiliser dans toutes les pages d'un site pour un même visiteur Aucune autre visiteur n'a accès à ces données En PHP, le support des sessions est disponible depuis la version 4

Méchanisme des sessions Cinq étapes générales : 1. Ouverture d'une session dans chaque page ayant accès aux données grâce à la fonction session_start() ; 2. Un identifiant de session est attribué à chaque utilisateur unique. L'identifiant est transmis d'une page à l'autre 3. Définition des variables de session accessibles dans toutes les pages du site qui utilisent la fonction session_start(). Les nom et les valeurs sont stockées dans le dossier /tmp du serveur (ou dans un répertoire sessions du serveur) 4. Lecture des variables de session dans chaque page en fonction des besoins à l'aide du tableau $_SESSION 5. Fermeture de la session après destruction éventuelle des variables de session

Envoi de l'identifiant de session Pour transmettre l'identifiant de session d'une page à une autre, il existe deux manières différentes : Transmission avec cookies : l'identifiant est transmis en utilisant un cookie sur le poste client Transmission à travers l'URL : l'identifiant est ajouté à l'URL de la page cible d'un lien

Sessions avec cookies La manière plus simple de transmettre l'identifiant de session est d'utiliser un cookie Il faut que la directive session.use_cookies du fichier php.ini ait la valeur on Il faut que le poste client accepte les cookies L'écriture des cookies de session est prise en charge par PHP lors du premier appel à la fonction session_start() Les variables de session sont définies par le biais du tableau $_SESSION. Exemples : $_SESSION['mavar']=mavaleur; $_SESSION['mavar']=$mavariable; La valeur est visible dans toutes les pages

Fin de la session Pour terminer une session on doit : détruire toutes les variables de la session avec la fonction session_unset() terminer la session avec la fonction session_destroy()

Exemple : identification - 1 Fichier pageindex.php : <?php //PAGE SANS COOKIES session_start(); if(isset($_POST['login'])&&isset($_POST['pass'])) { if($_POST['login']=="Pensa" && $_POST['pass']=="1234") { $_SESSION['acces']="oui"; $_SESSION['nom']=$_POST['login']; $_SESSION['html']=0; $_SESSION['php']=0; } } else { if (isset($_GET['logout'])) { session_unset(); session_destroy(); } ?>

Exemple : identification - 2 LES SESSIONS <?php if (isset($_SESSION['acces'])) { echo " Authentifié comme ". $_SESSION['nom']. " "; } ?> "> Accès réservé aux personnes autorisées: Identifiez vous ! Login : Pass :

Exemple : identification - 3 Visiter les pages du site Page HTML Page PHP <?php echo " "; echo "Nom de la session : ", session_name()," "; echo "Id de la session : ", session_id()," "; ?>

Exemple : identification - 4 Fichier pagephp.php : <?php session_start(); if(!isset($_SESSION['acces'])) { header("Location:pageindex.php"); } else { echo " Bonjour ". $_SESSION['nom']." "; $_SESSION['php'] ++; } ?>

Exemple : identification - 5 La page de PHP Accès réservé aux personnes autorisées Visiter les autres pages du site : Page d'accueil Page HTML Logout Contenu de la page PHP

Exemple : identification - 6 Fichier pagehtml.php : <?php session_start(); if(!isset($_SESSION['acces'])) { header("Location:pageindex.php"); } else { echo " Bonjour ". $_SESSION['nom']." "; $_SESSION['html'] ++; } ?>

Exemple : identification - 7 La page du HTML. Accès réservé aux personnes autorisées Visiter les autres pages du site : Page d'accueil Page PHP Logout Contenu de la page HTML

Sessions sans cookies Si les cookies sont désactivés, PHP ne peut plus enregistrer l'identifiant de session dans un cookie sur le poste client Il faut donc transmettre cet identifiant entre toutes les pages du site en ajoutant à la fin de chaque adresse définie dans un lien le caractère ? suivi de la valeur de la constante SID La constante SID contient une chaîne de caractères de la forme PHPSESSID=6a5c348dc5146a6a6ec d7e34 La constante SID équivaut à la chaîne de caractères : $chaine_session=session_name()."=".session_id();

Exemple Dans le fichier phpindex.php : ">Page HTML ">Page PHP