Lire et écrire dans un fichier – partie 2
Pour des raison particulière, il arrive qu’on est envie de faire une petite mise en page avant d’écrire dans un fichier. Le problème, il peut devenir difficile de réussir à les récupérer pour les réutiliser.
Dans ce code, on sauvegarde des informations sur les personnes qui visites la page:
<?php $donnees = "\n"; $donnees .= "---------- ----------\n"; $donnees .= date("Y-m-d H:i:s"); $donnees .= "\n---------- ----------\n"; $donnees .= $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; $donnees .= "\n---------- ----------\n"; $donnees .= $_SERVER['HTTP_USER_AGENT']; $donnees .= "\n---------- ----------\n"; $donnees .= "\n---------- ---------- ---------- ---------- ---------- ---------- ----------\n"; $filename = 'test.txt'; if (file_exists($filename)) { foreach (file($filename) as $key => $value) { $donnees .= $value; } } else { } file_put_contents('test.txt', $donnees); ?>
Ce qui donne dans le fichier:
---------- ---------- 2014-01-30 02:01:07 ---------- ---------- simonbhb.fr/blog/index.php ---------- ---------- Mozilla/5.0 (Windows NT 6.1; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0 ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- 2014-01-30 02:01:06 ---------- ---------- simonbhb.fr/blog/index.php ---------- ---------- Mozilla/5.0 (Windows NT 6.1; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0 ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------
Facile et simple a lire, ça sera plus le cas avec beaucoup plus de données. Il peut donc être utile d’afficher les données d’une autre manière. Pour cela on va afficher les données dans un tableau html pour gagner en lisibilité.
Mais comment récupérer les données, car chaque ligne a une donnée différente, ou commencer a les afficher et ou s’arrêter ?
Il faut commencer par séparer les données pour que chaque ligne de notre tableau affiche les bonnes informations. La séparation est une séries de barre, on en a sur la ligne 9 et 19(la couleur de la ligne est différente). Ensuite une fois qu’on sait ou est la séparation, on a plus qu’a stocker les données dans un array.
Dans ce code, on découpe les données, elles vont être placé dans un array:
<?php // Nom du fichier $file = file("test.txt"); $i = 0; // On commence a 0 // On parcourt le fichier foreach ($file as $key => $value) { if(strlen($value) == 77) // Si on sur la séparation { $i++; // $i change a chaque passage de la séparation } else { $array[$i][] = $value; // On ajoute chaque données entre chaque séparation dans un array } } ?>
Ensuite on a plus qu’a faire la mise en page pour afficher les données dans notre array:
<table cellspacing="2" cellpadding="2" width="100%" border="1"> <tr> <th style="width:12%;">Date</th> <th>URL</th> <th>Usert Agent</th> <th>Méthode</th> </tr> <?php foreach ($array as $key => $value) { ?> <tr> <td><?=$value[2]; //date ?></td> <td><?=$value[4]; // url ?></td> <td><?=$value[6]; // user_agent ?></td> <td><?=$value[8]; // méthod ?></td> </tr> <?php } ?> </table>
Résultat final:
Date | URL | Usert Agent | Méthode |
---|---|---|---|
2014-01-30 02:07:50 | simonbhb.fr/blog/index.php | Mozilla/5.0 (Windows NT 6.1; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0 | POST |
2014-01-30 02:07:48 | simonbhb.fr/blog/index.php | Mozilla/5.0 (Windows NT 6.1; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0 | POST |
Tous les codes sont testés et sont fonctionnels, si il arrive qu'un de ces codes ne fonctionne pas chez vous, merci de me le signaler.