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&eacute;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&eacute;");
}
$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&eacute;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("&eacute;chec de l'&eacute;criture");
}
// fermeture du fichier annuaire
if (!(@fclose($POINTEUR))){
erreur("impossible de fermer le fichier");
}
echo "<P>insertion r&eacute;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&eacute;pertoire";
}
echo "<BR>";
}
closedir($REP);
?>