">

La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

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

Présentations similaires


Présentation au sujet: "Techniques Internet de Base 2006-2007 Licence 2 (Info, Maths, PC/PA) Université Jean Monnet Ruggero G. PENSA"— Transcription de la présentation:

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

2 PHP - Formulaires

3 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 : >

4 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

5 Récupération des valeurs POST Il est toujours important de vérifier l'existence des variables On peut utiliser la fonction isset() Exemple :

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

7 Exemple : récupération de valeurs 2

8 Récupération des valeurs GET On doit toujours vérifier l'existence des variables Exemple :

9 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

10 Utilisation de la méthode GET - 2 Il faut utiliser le tableau $_GET : 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

11 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

12 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"

13 Exemple : valeurs multiples - 1 Fichier multiples.html Choix multiples Recherche d'emploi: complétez la fiche Nom Prénom Age

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

15 Exemple : valeurs multiples - 3 Fichiers multiples.php

16 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 " "; } ?>

17 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"]

18 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

19 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

20 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

21 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é

22 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

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

24 Exemple de transfer de fichier - 2 $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"];} } ?>

25 PHP - Fichiers

26 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)

27 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

28 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();

29 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("http://www.monsite.fr/moncv/formation.txt", "w", FALSE) $f3 = fopen(" ftp://ftp.monsite.fr/moncv/formation.txt", "a")

30 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)

31 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";

32 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";

33 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);

34 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)

35 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);...

36 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

37 Exemple : compteur de visites - 1 Compteur de visites

38 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 "; ?>

39 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");

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

41 Exemple : fichiers et formulaires - 2

42 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()

43 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);

44 Exemple : fgets() - 1

45 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 " "; ?>

46 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

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

48 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

49 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

50 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()

51 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");

52 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");

53 PHP – Cookies et sessions

54 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...)

55 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");

56 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);www.monsite.com

57 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 !!!

58 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; }

59 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

60 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

61 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

62 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

63 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()

64 Exemple : identification - 1 Fichier pageindex.php :

65 Exemple : identification - 2 LES SESSIONS "> Accès réservé aux personnes autorisées: Identifiez vous ! Login : Pass :

66 Exemple : identification - 3 Visiter les pages du site Page HTML Page PHP

67 Exemple : identification - 4 Fichier pagephp.php :

68 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

69 Exemple : identification - 6 Fichier pagehtml.php :

70 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

71 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();

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


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

Présentations similaires


Annonces Google