Fichiers et répertoires
Transcription
Fichiers et répertoires
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <HTML> <HEAD> <TITLE>Annuaire interne</TITLE> <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> </HEAD> <BODY> <FORM action="annuaire.php"> <P>Nom <INPUT type="text" name="nom"> <INPUT type="submit" value="numéro de poste"></P> </FORM> </BODY> </HTML> annuaire.php?nom=Smith annuaire.txt Andre Andres Dupond Dupont Pierre Radup Smith G. R. P. M. L. K. J. 35 35 35 36 36 35 35 53 52 54 11 13 10 50 Ouvrir un fichier fopen(nom_fichier, mode) FALSE mode r w a r+ w+ a+ signification Lecture (aucune modification possible), le pointeur est placé en début de fichier. Ecriture, le pointeur est placé en début de fichier (le contenu du fichier sera effacé), si le fichier n’existe pas il sera créé Ajout, le pointeur est placé à la fin du fichier (les écritures seront réalisées en fin de fichier), crée le fichier s’il n’existe pas. Lecture et écriture, le pointeur est placé en début de fichier Lecture et écriture, le pointeur est placé en début de fichier, si le fichier n’existe pas il sera créé lecture et écriture en fin de document $POINTEUR = fopen("annuaire.txt", "r") ; Lire les données d’un fichier o fgetc(id_ressource) o fgets(id_ressource, N) N-1 N ! "# $ o rewind(id_ressource) $car = fgetc($POINTEUR); echo $car, "<BR>"; $chaine = fgets($POINTEUR, echo $chaine, "<BR>" ; rewind($POINTEUR); $chaine = fgets($POINTEUR, echo $chaine, "<BR>" ; rewind($POINTEUR); $chaine = fgets($POINTEUR, echo $chaine, "<BR>" ; $chaine = fgets($POINTEUR, echo $chaine, "<BR>" ; A ndre G. 35 53 Andre G. 35 53 Andr e G. 35 53 Fermer un fichier fclose(id_ressource) FALSE 255); 255); 5); 255); % Andre Andres Dupond Dupont Pierre Radup Smith G. R. P. M. L. K. J. 35 35 35 36 36 35 35 53 52 54 11 13 10 50 annuaire.php <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <TITLE>Annuaire</TITLE> <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> </HEAD> <BODY> <?php // interrompt l’execution du script et affiche le message function erreur($message) { echo $message; exit; } /* // // if ------------- CORPS ---------------- */ recupere nom=Smith envoye par le formulaire isset retourne TRUE si nom existe dans la QUERY_STRING (!isset($_GET['nom'])){ erreur("aucun nom doné"); } $nom = $_GET['nom']; // ouverture en lecture du fichier annuaire // @ evite l’envoi par php d’un message d’erreur en cas d’echec $POINTEUR = @fopen("annuaire.txt","r"); if (!($POINTEUR)){ erreur("impossible d'ouvrir l'annuaire"); } // lecture des donnees et recherche du nom while (!feof($POINTEUR)){ // tant qu’il y a des donnees // on suppose qu’une ligne de l’annuaire est toujours < 255 $ligne = fgets($POINTEUR,255); // 1 ligne du fichier $exp = "^$nom"."[[:blank:]]+"; if (eregi($exp, $ligne)){ echo "<P>", htmlentities($ligne), "</P>\n"; } } // fermeture du fichier annuaire if (!(@fclose($POINTEUR))){ erreur("impossible de fermer le fichier"); } ?> </BODY> </HTML> & Stocker un fichier dans un tableau file(nom_fichier) ( % )FALSE * Stocker un fichier dans une chaîne de caractères file_get_contents(nom_fichier) )+,+ -. ' & * ( FALSE <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <HTML> <HEAD> <TITLE>Insertion dans l'annuaire interne</TITLE> <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> </HEAD> <BODY> <FORM action="inserer.php"> <P>Nom <INPUT type="text" name="nom"> Initiale <INPUT type="text" name="ini" size="3"> Poste <INPUT type="text" name="poste" size="5"> <INPUT type="submit" value="insérer"></P> </FORM> </BODY> </HTML> inserer.php?nom=Contensin&ini=M&poste=36+19 annuaire.txt / 0 Andre G. Andres R. Dupond P. Dupont M. Pierre L. Radup K. Smith J. Contensin 1 &2 3 fwrite(id_ressource, chaine) 35 35 35 36 36 35 35 M. 53 52 54 11 13 10 50 36 19 FALSE % ' Inserer.php <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <HTML> <HEAD> <TITLE>Insertion dans l'annuaire</TITLE> <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> </HEAD> <BODY> <?php function erreur($message) { echo $message; exit; } // vérifie que la chaîne reçue en argument ne comporte que des // lettres de l’alphabet en minuscules ou en majuscules function verifch($ch, $ctrl) { $exp = '^[a-zA-Z]+$'; if (!ereg($exp, $ch)){ erreur("$ctrl incorrect"); } } // vérifie que le numéro de poste est correct, c’est-à-dire // qu’il est composé de deux chiffres suivis d’un caractère // d’espacement, suivi de deux chiffres function verifnb($nb, $ctrl) { $exp = '^[0-9]{2} [0-9]{2}$'; if (!ereg($exp, $nb)){ erreur("$ctrl incorrect"); } } /* ------------- CORPS ---------------- */ // donnees du formulaire if (!isset($_GET['nom']) || !isset($_GET['ini']) || !isset($_GET['poste'])){ erreur("il manque des champs"); } $nom = $_GET['nom']; verifch($nom, "nom"); $ini = $_GET['ini']; verifch($ini, "initiale"); $poste = $_GET['poste']; verifnb($poste, "poste"); 4 // ouverture en ajout du fichier annuaire $POINTEUR = @fopen("annuaire.txt","a"); if (!($POINTEUR)){ erreur("impossible d'ouvrir l'annuaire"); } // ajout de la ligne $ligne = "$nom $ini. $poste\n"; $nb = fwrite($POINTEUR, $ligne); if (!$nb){ erreur("échec de l'écriture"); } // fermeture du fichier annuaire if (!(@fclose($POINTEUR))){ erreur("impossible de fermer le fichier"); } echo "<P>insertion réussie :<br>$ligne</P>"; ?> </BODY> </HTML> ! fpassthru(id_ressource) "# $ readfile(nom_fichier) ! ) $ * ! <?php @readfile("annuaire.txt"); ?> 2 " #$ ! # 6 ,77+ o method. POST o enctype. multipart/form-data’ traite_upload.php lorsque l’argument fichier n’a pas été envoyé traite_upload.php avec l’argument fichier qui a été envoyé o +,+ -. ' o +,+ -. ' 0 / • • • • % $HTTP_POST_FILES % 8 % $_FILES 9 % 9 ! file % ! )size* ! 1 /1 )type* 9 )name* # ( )tmp_name* • : )error* +,+ -. ' 5 + 9 X ,71 < $_FILES['X']['size'] < 8 : = > ! +?@7 @ ! file < 6 = >A % ! formulaire; # # @ 9 = ! 9 formulaire < > $ % $_FILES 0 # ! > % $fichier 8 6 B % = # % ! ( ) * ! 1 /1 C % < + # % 0 < ( ) % style DIV* <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <HTML> <HEAD> <TITLE>Envoi de fichier</TITLE> <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> </HEAD> <BODY> <?php if (isset($_FILES['fichier'])){ $fichier = $_FILES['fichier']; foreach ($fichier as $cle=>$val){ echo "$cle = $val<BR>"; } echo "<DIV style=\"white-space:pre; border:groove\">"; readfile($fichier['tmp_name']); echo "</DIV>"; unlink($fichier['tmp_name']); //suppression du fichier } else{ $ch = <<<formulaire <FORM enctype="multipart/form-data" action="traite_upload.php" method="POST"> <INPUT type="file" name="fichier"> <INPUT type="submit" value="Envoyer fichier"> </FORM> formulaire; echo $ch; } ?> </BODY> </HTML> ; % 1 ?B/D/0E7/?F@ @A < @ D/0,/ @ Prototype Rôle boolean chgrp(string fich, string nomgroupe) Change le groupe d' appartenance du fichier boolean chmod(string fich, int mode) Change les droits d' accès selon le mode spécifié (une valeur octale) Change le propriétaire du fichier Renomme fich en fich2 boolean chown(string fich, string owner) boolean rename(string fich, string fich2) 0 TRUE $ FALSE /FD? 1 E7/?F@ @A < @ D/0,/ @ Prototype Rôle string basename(string chemin) int filectime(string fich) int filesize(string fich) boolean file_exists(string fich) boolean is_file(string fich) boolean is_executable(string fich) boolean is_readable(string fich) boolean is_writeable(string fich) Retourne la partie nom de fichier d' un chemin Retourne la date de dernière modification du fichier (timestamp). Retourne la taille en octets du fichier. Retourne TRUE si le fichier existe. Retourne TRUE si nomfich est un fichier. Retourne TRUE si le fichier existe et est en mode exécutable. Retourne TRUE si le fichier existe et est en mode lecture. Retourne TRUE si le fichier existe et est en mode écriture. D?F07/?F@ A7/< @ +?A <E 1 EF/+A<E7/?F B D/0,/ @ Prototype Rôle string tempnam(string rep, string ch) Création d' un fichier temporaire unique dans le répertoire rep. Le préfixe ch est optionnel, retourne le nom du fichier temporaire ou FALSE en cas d’échec Ouvre le fichier fich, selon le mode d' ouverture précisé (w = écriture, r = lecture, a = ajout en fin de fichier) et retourne un identifiant de ressource ou FALSE en cas d’erreur Ferme le fichier, retourne FALSE en cas d’échec Retourne TRUE si le pointeur a atteint la fin du fichier dont l’identifiant est passé en argument, sinon FALSE. Retourne un caractère du fichier à partir du pointeur de fichier Retourne FALSE ou N-1 caractères du fichier à partir du pointeur courant (ou les caractères jusqu’au caractère ‘\n’) Ecrit la chaîne dans le fichier dont l’identifiant est id. Retourne le nombre d’octets écrits ou FALSE Retourne un tableau de N cases ou FALSE, N correspondant au nombre de lignes du fichier Retourne le contenu du fichier dans une chaîne ou FALSE Envoie le contenu du fichier dont l’identifiant est id, à partir du pointeur courant ou retourne FALSE Ouvre un fichier, envoie son contenu au client et ferme le fichier. Place le pointeur au début du fichier (FALSE si échec) resource fopen(string fich, string mode) boolean fclose(resource id) boolean feof(resource id) string fgetc(resource id) string fgets(resource id, int N) int fwrite(resource id, string chaine) array file(string fich) string file_get_contents(string fich) int fpassthru(resource id) int readfile(string fich) booleen rewind(resource id) 3 D?F07/?F@ +?A < @ + 7?/ @ Prototype Rôle string dirname(string chemin) boolean is_dir(string nom) boolean file_exists(string nomrep) boolean chdir(string repertoire) void closedir(resource pointeur) boolean copy(string s, string d) boolean mkdir(string nomrep) resource opendir(string nomrep) boolean rmdir(string nomrep) string readdir(resource pointeur) Retourne la partie répertoire d' un chemin TRUE si nom est un répertoire TRUE si le répertoire existe Change de repertoire, renvoie TRUE en cas de succès Ferme un répertoire ouvert par opendir Copie d' un fichier s vers une destination d Crée un nouveau répertoire Ouvre un répertoire Supprime le répertoire Pour lire un élément du répertoire (retourne un nom de fichier ou de répertoire) Revenir au début du répertoire void rewinddir(pointeur) < +,+ 8 # # # # @ @ # <?php // affichage du contenu du repertoire courant $REP = opendir("."); while ($entree = readdir($REP)){ echo "$entree est un "; if (is_file($entree)){ echo "fichier de ", filesize($entree), " octets"; } if (is_dir($entree)){ echo "répertoire"; } echo "<BR>"; } closedir($REP); ?>