15- PHP ( Les Fichiers )

0 commentaires
Principes :

       Lorsque l'on n'a pas accès à une base de données, il faut utiliser des fichiers pour y stocker des données. En php la création ou la lecture de fichiers est possible, avec une multitude de fonctions...

    il faut bien noter que lorsque l'on sera sur un serveur ftp, le problème des droits qu'un utilisateur (ou qu'un script php...) peut avoir sur un fichier conditionnera l'accès au fichier proprement dit les fonctions de base sont la fonction fopen(), qui permet d'ouvrir un fichier, pour le lire ou y écrire la fonction fclose(), qui permet de fermer un fichier la fonction fgets(), qui permet de lire dans un fichier ouvert Ouverture de fichier : fopen()

Fonction fopen() :
int fopen (string nomfichier, string mode)

Le paramètre nomfichier peut prendre plusieurs valeur parmis les suivantes:
• Si nomfichier commence par "http://" (insensible à la casse), une
connexion HTTP 1.x est ouverte , et un pointeur sur la réponse fournie est retourné.

• Si nomfichier commence par "ftp://" (insensible à la casse), une connexion FTP est ouverte , et un pointeur sur la réponse fournie est retourné.. Vous pouvez ouvrir des fichiers en lecture seulement, ou en écriture seulement (le full duplex n'est pas supporté).

• Si nomfichier commence par n'importe quoi d'autre, PHP tentera de lire ce fichier dans le système local, et un pointeur sur le fichier ouvert sera retourné.

Si l'ouverture échoue, fopen() retourne FALSE (0).

Le paramètre mode peut prendre les valeurs suivantes :
• 'r' - Ouvre en lecture seule, et place le pointeur de fichier au début du fichier.
• 'r+' - Ouvre en lecture et écriture, et place le pointeur de fichier au début du fichier.
• 'w' - Ouvre en écriture seule; place le pointeur de fichier au début du fichier et réduit la taille du fichier à 0. Si le fichier n'existe pas, on tente de le créer.
• 'w+' - Ouvre en lecture et écriture; place le pointeur de fichier au début du fichier et réduit la taille du fichier à 0. Si le fichier n'existe pas, on tente de le créer.
• 'a' - Ouvre en écriture seule; place le pointeur de fichier à la fin du fichier. 
Si le fichier n'existe pas, on tente de le créer.
• 'a+' - Ouvre en lecture et écriture; place le pointeur de fichier à la fin du fichier. Si le fichier n'existe pas, on tente de le créer.


      De plus, mode peut contenir la lettre 'b'. Cette option n'est utile que sur les systèmes qui font la différence entre les fichiers binaires et les fichiers textes (en bref, c'est inutile sous Unix). S'il n'est pas nécessaire, il sera ignoré.

Fermer un fichier : fclose()
La fonction fclose(), permet de fermer un fichier
Fonction fclose() :
int fclose (int ptrfichier)
l'entier prtfichier est l'entier retourné précédemment lors de l'ouverture du fichier.

Exemple :

$fich=fopen("essai.txt","a+");
echo "le pointeur retourné est $fich";
fclose($fich);
Die :
void die (string message)
Cette fonction affiche la chaîne passée en paramètre, puis termine
l'exécution du script. Elle ne retourne rien de plus.
<?php
$file = fopen ("filename", 'r') or die("impossible d'ouvrir le fichier");

?>



Ecriture dans un fichier : fputs() - fwrite()

La fonction fputs(), permet d'écrire dans un fichier

Fonction fputs() :
int fputs (int ptrfichier, string texte, int taille)

Ecrit le contenu de la chaîne texte dans le fichier pointé par ptrfichier. Si la longueur taille est fournie, l'écriture s'arrêtera après taille octets, ou à la fin de la chaîne (le premier des deux).

fputs() est un alias de fwrite(), et lui est identique en tout point.

Notez que taille (qui représente le nombre de caractères à écrire) est un

paramètre optionnel, et s'il n'est pas spécifié, toute la chaîne est écrite.


Lecture dans un fichier : fgets() feof() fseek()

La fonction fgets(), permet de lire un fichier sur une ligne…

Fonction fgets() :

string fgets (int ptrfichier, int taille)

fgets() retourne la chaîne lue jusqu'à la longueur taille - 1 octet, ou bien la fin du fichier, ou encore un retour chariot (le premier des trois qui sera rencontré).

ptrfichier correspond à l'identifiant récupéré lors de l'ouverture du fichier.


Si le fichier contient plusieurs lignes, on pourrait alors effectuer une lecture en utilisant la fonction feof() qui permet de tester la fin de fichier.

Fonction feof() :

int feof(int ptrfichier)
feof()qui retourne TRUE (1) si le pointeur est à la fin du fichier, ou si une erreur survient, sinon, retourne FALSE (0) et incremente alors la position courante.
ptrfichier correspond à l'identifiant récupéré lors de l'ouverture du fichier.

Dans le cas d'une utilisation un peu classique, on peut alors avoir besoin de positionner le pointeur qui parcoure le fichier grace à fseek(), pour pouvoir repartir au début d'un fichier.


Fonction fseek() :

int feof(int ptrfichier)
fseek() retourne 1 si le pointeur est correctement repositionné en début de fichier et retourne –1 sinon.

EXEMPLE : si on veut savoir combien de fois on accède à une page, il suffit de
faire exécuter sur la page en question un bout de code php permettant
d'incrémenter une variable stockée dans un fichier.


la page html est la suivante :

<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<p>Bonjours </p>
<p>page n&deg;1</p>
<p>depuis cette page vous pouvez acc&eacute;der &agrave; la page
suivante sur
laquelle un compteur est install&eacute;</p>
<p>acc&eacute;der &agrave; la page suivante en cliquant <a
href="fichiercompte.php3">ici</a></p>
</BODY>
</HTML>

Le code php étant:

<HTML>
<HEAD>
</HEAD>
<BODY>
<?
$fp = fopen("compteur.txt","r+"); // ouvre un fichier existant
if ($fp == 0) // si non existant
{
$fp = fopen("compteur.txt","w+"); // création du fichier (et raz)
fputs($fp,0); // met 0 dedans
fclose($fp); // fermeture
$fp = fopen("compteur.txt","r+"); // ouverture du fichier existant
}
$nbvisites = fgets($fp,11); // lecture valeur actuelle
$nbvisites++; // incrementation
fseek($fp,0); // repositionnement en début
fputs($fp,$nbvisites); // recriture nouvelle valeur
fclose($fp);
print("$nbvisites visiteurs");
?>
</BODY>
</HTML>

N.B: ce compteur est absolument indépendant des cookies, (voir chap
suivant) et marchera donc toujours….




0 commentaires:

Enregistrer un commentaire

Copyright 2013 © 2 Rattrapage