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 été 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 :