TD PHP - Les fichiers et répertoires

Transcription

TD PHP - Les fichiers et répertoires
LPSIL
UE04
ufrsciencestech
TD PHP - Les fichiers et répertoires
Exercice 1
– Faire un script qui affiche une valeur incrémentée de 1 à chaque accès à la page ; la valeur du
compteur est stockée dans un fichier pour assurer sa conservation entre les accès aux pages
Correction
<?php
$nom = "compteur.txt";
if (file_exists($nom)) {
// afficher la valeur du compteur d’accès à la page
$fichier = fopen($nom, "r"); // ouverture en lecture seule
$decompte = fgets($fichier, 9); // on limite le compteur à 10
milliards d’accès
echo <<<AFFICHER
<div align="center"><font color="#009933"><b><font
size="5">
Cette page a &eacute;t&eacute; vue
$decompte
fois.
</font></b></font></div>
<br>
AFFICHER;
fclose($fichier);
// incrémenter le compteur d’accès à la page
$decompte++;
// sauvegarder le compteur
$fichier = fopen($nom, "w"); // ouverture en écriture, l’ancien fichier
est détruit
fputs($fichier, $decompte, 9);
fclose($fichier);
}
else {
echo "Le compteur n’existe pas ($nom)<br>";
}
?>
Exercice 2
1. Lire et afficher le contenu d’un fichier test.txt
1
Correction
<?php
$nom = "data.txt";
if (file_exists($nom)) {
echo "*** Liste du fichier $nom : <br>";
$fichier = fopen($nom, "r"); // ouverture en lecture seule
while (!feof($fichier)) {
$une_ligne = fgets($fichier);
echo "$une_ligne<br>";
}
echo "*** Fin de liste du fichier $nom<br>";
fclose($fichier);
}
else {
echo "Le fichier $nom n’existe pas<br>";
}
?>
Exercice 3
– Ecrire dans un fichier en ajoutant une ligne au fichier. Vérifier le résultat en exécutant ensuite
le script de lecture et affichage.
Correction
<?php
$nom = "data.txt";
$fichier = fopen($nom, "a+"); // ouverture en ajout
$l = "Cette ligne est un ajout.\n";
fputs($fichier, $l);
echo "Ajout dans le fichier : $l<br>";
fclose($fichier);
?>
Exercice 4
On souhaite afficher les coordonnées des personnes inscrites dans fichier data.txt, chaque ligne
est de la forme : nom * prénom * rue * cp * ville
2
Correction
$fichier="calepin.txt";
$fd=fopen($fichier,"r");
while(!feof($fd)) {
$ligne = fgets($fd,255);
if (!empty($ligne)) {
$tabligne=explode("|",$ligne);
print "<br>Nom : $tabligne[0]";
print "<br>Prenom : $tabligne[1]";
print "<br>Adresse : $tabligne[2]";
print "<br>CP : $tabligne[3]";
print "<br>Ville : $tabligne[4]";
}
}
fclose($fd);
Exercice 5
Créer un fichier pour enregistrer la date de chaque connexion à votre site. Procéder ensuite à
la lecture des données puis calculer des statistiques sur ces dates.
Correction
<?php
//Ecriture des dates
$idfile=fopen("connex.txt","a");
$date=time();;
flock($idfile,2);
fwrite($idfile,$date);
flock($idfile,3);
fclose($idfile);
//Lecture des données
$idfile=fopen("connex.txt","r");
flock($idfile,1);
$i=1;
while($date=fgets($idfile,11))
{
$tab[]=$date;
}
//Elimination des doublons
$tabstat=array_values(array_unique($tab));
//Affiche les dates et les heures des connexions
foreach($tabstat as $valeur)
{
echo date("d/M H:m:s",$valeur),"<br />";
}
flock($idfile,3);
fclose($idfile);
?>
3
Répertoires
Exercice 6
Ecrire un programme qui affichera le contenu du répertoire spécifié dans une variable. Selon les
extensions des fichiers (txt, doc, odt) dans une couleur, et afficher les images (25% de la taille)
Correction
$repertoire="fichiers/";
$fd=opendir($repertoire);
while ($fichier=readdir($fd)) {
if (ereg(".php|.asp",$fichier) )
print "<li><FONT COLOR=#FF0000>$fichier</FONT> <b>Scripts</b><br>";
if (ereg(".txt",$fichier) )
print "<li><FONT COLOR=#00FF00>$fichier</FONT> <b>Texte</b><br>";
if (ereg(".doc|.xls|.ppt",$fichier) )
print "<li><FONT COLOR=#0000FF>$fichier</FONT> <b>Office</b><br>";
if (ereg(".gif|.jpg|.jpeg|.png",$fichier) )
print "<li><A HREF= $repertoire$fichier> <IMG SRC=$repertoire$fichier HEIGHT=\"25%\" WIDTH=
}
closedir($fd);
Exercice 7 Parcourir un répertoire contenant de images de quatre façons
1. Afficher les images trouvés
2. Afficher les onglets qui font liens vers les images
3. Afficher les onglets qui font liens vers les pages contenant les images
4. Afficher les onglets dans un tableau qui font liens vers les images dans un cadre
4
Correction
1. simple.php :
<HTML><BODY>
<H2 ALIGN="center">On affiche les images trouvées</H2>
<?php
$dir = opendir(".");
while($file = readdir($dir)) {
if (substr($file,-4)==".jpg") {
echo "<IMG SRC=\"$file\">\n";
}
}
closedir($dir);
?>
</BODY></HTML>
2. thumb.php :
<HTML><BODY>
<H2 ALIGN="center">On affiche les onglets, qui font liens
vers les vraies images</H2>
<?php
$dir = opendir("mini");
while($file = readdir($dir)) {
if (substr($file,-4)==".jpg") {
echo "<A HREF=\"$file\"><IMG SRC=\"mini/$file\"></A>\n";
}
}
closedir($dir);
?>
</BODY></HTML>
3. thumbplus.php :
<HTML><BODY>
<H2 ALIGN="center">On affiche les onglets, qui font liens vers
des pages contenant les vraies images dans un cadre</H2>
<?php
$dir = opendir("mini");
while($file = readdir($dir)) {
if (substr($file,-4)==".jpg") {
echo "<A HREF=\"image.php?image=$file\">"
."<IMG SRC=\"mini/$file\"></A>\n";
}
}
closedir($dir);
5
?>
</BODY></HTML>
4. parfait.php :