Jean-Michel ILIE - novembre SIL - module M12 Programmation Internet en PHP SIL module M12 Jean-Michel Ilié IUT Paris 5 - département informatique Partie III : SGF et Gestion des fichiers
Jean-Michel ILIE - novembre SIL - module M12 PLAN du cours Introduction Gestion des fichiers Gestion des répertoires Téléchargement de fichiers Base de données fichiers
Jean-Michel ILIE - novembre SIL - module M12 Intérêts des traitements fichiers côtés serveur Installation de site automatisée fichiers système de répertoires gestion de la sécurité Partage de fichiers - téléchargement (upload) Administration du site à distance
Jean-Michel ILIE - novembre SIL - module M12 Gestion des fichiers Ouverture et fermeture Afficher des fichiers Lire et Ecrire Naviguer dans le fichier Copier, supprimer, déplacer Gestion des répertoires Attributs des fichiers
Jean-Michel ILIE - novembre SIL - module M12 Gestion des fichiers int $ff =fopen ('nom_fic', str_mode[b]); // str_mode : a : ajout; a+ : ajout/lecture; //r:lecture; r+ : lecture/écriture débutFic; //w: remplacement; w+: remplacement/lecture..//Rajouter ' b ' si fichier binaire (sous windows) //ff= 0 si échec sinon le pointeur du fichier $bool= fclose ($ff); $bool= fpassthru($ff); //envoie le (reste du) fichier sur la sortie standard (vers le navigateur) <?php if (!$ff=fopen("img.gif", "rb")) echo "affichage de l'image impossible"; else fpassthru($ff); ?> Ouvrir, afficher, fermer
Jean-Michel ILIE - novembre SIL - module M12 Gestion des fichiers $c= getc ($ff); $txt= fread($ff, int_lg);//strlen(txt)=lg $txt= fgets($ff, int_lg+1); //lecture de lignes $txt= fgetss($ff, int_lg); //similaire, sans rendre les balises HTML, PHP $bool=feof($ff); //pour tester la fin de fichier $tab=file($ff); //lecture et insertion des lignes //dans le tableau : tab[i]= la ième ligne $bool= fputs ($ff, str, [int_lg]); //str= chaîne à écrire $bool = fwrite ($ff, str, [int_lg]); $bool = rewind ($ff); //réinitialise le pointeur $bool = fseek ($ff, int_decalage); //décalage absolu en octets : -1 si échec et 0 si réussite <?php... $tab = file($ff); for ($i=0; $i<count($ tab ), $i++) echo "ligne $i = $tab[$i]"; ?> Lire, Naviguer, Ecrire
Jean-Michel ILIE - novembre SIL - module M12 Gestion des fichiers $bool = copy ("src", "dest"); $bool = rename ("src", "dest"); <?php... if (! file_exists($fichier)) {echo 'rien à copier'; exit ;} if (! copy ($fichier, "c:.. /image/")) {echo 'pb de copie'; exit ;} ?> //alternative : évite les or die ('rien à "c:.. /image/") or die ('erreur copie'); Copier, déplacer, détruire, existence $bool = unlink ("fic"); //supprime $bool = file_exists ("fic"); //test
Jean-Michel ILIE - novembre SIL - module M12 Gestion des répertoires $bool = chdir ("nom_rep"); //positionne le répertoire courant $bool = mkdir ("nom_rep", int_mode); //mode : permission d'accès unix (Windows l'ignore) $bool = rmdir ("nom_rep"); //si vide, détruit le répertoire $dd = opendir ("nom_rep"); //ouverture (par défaut le répertoire courant) $str = readdir ($dd); //lit la prochaine entrée du répertoire rewinddir ($dd); //se place sur la 1er entrée du répertoire closedir ($dd); //ferme <?php... if (!mkdir ("/temp", 0700) ) echo "creation imposible";?> Ouvrir, afficher, positionner créer, détruire <?php $rep=opendir("../") while ($nom_fich =readdir ("$rep")) echo "$nom_fic"; chdir ("/temp"); ?>
Jean-Michel ILIE - novembre SIL - module M12 Téléchargement (upload) Formulaire de téléchargement <FORM action="upload.php" method="POST" enctype="multipart/form-data"> Envoyer ce fichier : Variables créées sur le serveur : $_FILES['userfile']['name'] //intitulé initial $_FILES['userfile']['size'] //taille $_FILES['userfile']['type'] //type MIME $_FILES['userfile']['tmp_name'] // fichier temporaire créé par le téléchargement
Jean-Michel ILIE - novembre SIL - module M12 Fichier soumis : Nom : Nom temporaire : Taille : Type : <?$dest=".\\upload.txt"; //!!!Barres obliques inverses //!!! à Doubler. if (copy( $_FILES['userfile']['tmp_name'], $dest)) echo(" copie réussie. "); else echo(" echec de copie. "); unlink( $_FILES['userfile']['tmp_name'] ); ?> // Supprimer le fichier temporaire Téléchargement (upload) <form action="upload.php" method="post" enctype="multipart/form-data"> Envoyer ce fichier : parcours du SGF client Téléchargement puis copie
Jean-Michel ILIE - novembre SIL - module M12 Bases de données en fichiers (BD non relationnelle) Table à deux entrées Identifiant / Valeur (équivalent dictionnaire) $db= dba_open ($dbpath, "acces", $dbtype, [int_model]); //chemin de la base : $dbpath (ex : database.db ) //acces : 'r', 'w', 'c' (création) ou 'n' (écraser les données existantes) //' type $dbtype de gestion : 'gdbm' (GNU unix), db2, 'cdb' (qmail) //rend false si échec $id= dba_firstkey($db); $id= dba_nextkey($db); //rend false en fin dba_fetch($id, $db); //rech par $id dba_delete ($id, $db); dba_replace ($id, 'valeur', $db); dba_sync($db); //réalisation effective des modifications dans la base dba_close($db); Fct sup : la sérialisation des entrées $ch= serialize($tab); // de tableau en chaîne $tab= deserialize($ch); // de chaîne en tableau
Jean-Michel ILIE - novembre SIL - module M12 Exercices Gestion des fichiers utilisateurs Administration des fichiers et répertoires du serveur
Jean-Michel ILIE - novembre SIL - module M12 Application Gestion d'un carnet d'adresse $creat = "CREATE TABLE $tab ( NOM VARCHAR(255), VARCHAR(255), VILLE VARCHAR(255), DESCRIPTION VARCHAR(255), TELEPHONE VARCHAR(255), ID INT PRIMARY KEY AUTO_INCREMENT )"; NOM (PRIMARY KEY) VILLE DESCRIPTION TELEPHONE Table carnetAdresse (base PHP) Actions sur la table Ajouter un enregistrement Rechercher un enregistrement modifier Détruire