PHP - Manipulation des fichiers
Réponse AJAX

Lire intégralement un fichier, en une seule fois

La fonction file_get_contents permet de récupérer l'intégralité du contenu d'un fichier d'un coup.

Ecrivez le script PHP qui récupère et affiche le contenu du fichier http://www.bts-sio.com/api/infouser.php?id=
( ! ) Notice: Undefined index: cookie_user_id in C:\wamp64\www\spastore_cours\htdocs\cours\SLAM 5\PHP - fichiers\PHP - Fichiers.php on line 27
Call Stack
#TimeMemoryFunctionLocation
10.0011404056{main}( )...\PHP - Fichiers.php:0

Attention : c'est un fichier XML, donc il contient des balises, donc il faut l'échapper correctement pour le voir intégralement dans le navigateur.

Votre réponse n°1

Lire un fichier texte ligne par ligne

Pour lire un fichier texte ligne par ligne, il faut d'abord l'ouvrir avec la fonction fopen, puis lire chaque ligne grâce à la fonction fgets.

On peut faire tout ça grâce à une boucle calquée sur le shéma suivant :

Les chemins absolus (qui commencent par /) sont pris à partir de la racine du disque dur et non pas à partir de la racine de l'espace web (comme c'est le cas avec <a href=...> ou <img src=...> par exemple).

Le but est de trouver les tentatives de piratages dans les logs de Filezilla FTP Server. Le fichier que nous allons utiliser se trouve :

Parcourez ce fichier ligne par ligne et afficher les lignes qui contiennent la chaine de caractères admin, ainsi que les deux lignes suivantes.

Collez ici le code PHP qui effectue ce traitement :

Votre réponse n°2

Grâce à un site d'IP Localization, notez quelle est la provenance de ces foutus pirates :

Votre réponse n°3

Lire un fichier CSV : explode de chaque ligne

Le format CSV est un format de fichier texte standard, notamment utilisé pour les imports / exports dans les tableurs (Excel, Calc, Sheet, etc.). Chaque ligne du tableur représente une ligne dans le fichier CSV, chaque colonne du tableur est séparée par un point-virgule dans le fichier.

Pour traiter chaque donnée d'un tel fichier, on va donc :

Prenez un fichier Excel (ou d'un autre tableur) quelconque et exportez-le au format CSV grâce à :
Enregistrez sous Autres formats CSV (Dos)

Écrivez le script PHP qui lit ce fichier et affiche le contenu de chaque cellule Excel dans une cellule de tableau HTML.

Votre réponse n°4

(re)Créer un fichier et écrire son contenu

Cela peut servir à générer un flux RSS, exporter une BDD au format XML, générer une configuration, etc.

Pour (re)créer un fichier texte et y écrire du texte, il faut d'abord l'ouvrir avec la fonction fopen, puis écrire chaque contenu avec la fonction fwrite.

On peut faire ça grâce à ce genre de code :

Remarques : si le fichier n'existe pas, il est créé. S'il existe déjà, son contenu sera détruit.

Vous allez écrire le script PHP qui réalise l'export de la base de données des séries TV (de ce TP) au format XML. Votre script doit produire le fichier suivant (extrait) :

<?xml version="1.0" ?> <series-TV> <serie id='2'> <nom>Marvel's The Punisher</nom> <annee>2017</annee> <styles> <style id='4'>Fantastique</style> <style id='7'>Action</style> </styles> </serie> <serie id='3'> ... </serie> ... </series-TV>

Collez ici votre code :

Votre réponse n°5

Ajouter du contenu à la suite d'un fichier existant :
le monitoring

Ici il s'agit toujours d'écriture, mais sans écraser le contenu existant du fichier. Les écritures vont donc se cumuler "idénfiniment", c'est ce qui se passe par exemple lorsqu'on génère des fichiers logs (ou en français : journalisation).

D'autres mécanismes (non explicités ici) permettront d'éviter que les fichiers ne deviennent trop gros, car ils peuvent sérieusement encombrer les disques durs.

On peut faire ça grâce à ce genre de code :

Modifiez la fonction mysqli_myquery() de façon à ce qu'elle écrive, dans le fichier monitor_sql.txt, chaque requête qui a été exécutée sur votre site (ainsi que la date et l'adresse IP correspondante). Vous devez obtenir un résultat qui ressemble à ça :

2022-01-29 01:20 - 54.224.117.125 : SELECT * FROM categorie WHERE cat=1 limit 0 union select login, mdp from user --

Collez ici le nouveau code de cette fonction :

Votre réponse n°6

Quelques autres fonctions utiles

D'autres fonction utiles sur les fichiers :

Le paramétrage de PHP et les fichiers

Dans le php.ini :