Bonjour,
Je débute en php et j'ai décidé de faire une page web pour m'exercer. Mon but et de faire une page web qui, en fonction des arguments qu'on lui impose (index.php?page=nom_de_la_page) ira chercher le contenu d'un fichier txt pour le mettre dans un cadre de ma page (entre un <div></div> ). J'ai décidé de faire une protection pour éviter qu'on puisse insérer n'importe quel code dans ma page index.php, donc avant d'aller chercher le fichier txt et de l'insérer dans le cadre, le script va d'abord vérifier dans un autre fichier texte (pages.txt) si la page demandée existe vraiment. Voici mon code:
Citation :
<?php
$page_liste = fopen("pages.txt", "r";); //on ouvre le fichier pages.txt en lecture seule
$nombre_de_sites = fgets($page_liste); //on lit d'abord le nombre de pages sur le site
$erreur = 1; //on active d'abord l'erreur
for ($boucle = 0; $boucle < $nombre_de_sites; $boucle++) // la boucle sert à vérifier si la page existe vraiment
{
$page = fgets($page_liste);
if ($page == $_GET['page'].'.txt')
{
$erreur = 0;
}
}
fclose($page_liste); //on ferme page liste
if ($erreur == 0) //si la page existe
{
$site = fopen('pages/'.$_GET['page'].'.txt',"r";);
$contenu = fread($site, filesize('pages/'.$_GET['page'].'.txt')); //on ouvre la page
echo $contenu;
fclose($site);
}
else
{
$site = fopen ('pages/'.'accueil.txt',"r";); //si la page n'existe pas ou s'il y a un problème on ouvre la page d'accueil
$contenu=fread($site, filesize('pages/'.'accueil.txt'));
echo $contenu;
fclose($site);
}
?>
|
Voici le contenu de ma page "pages.txt"
Citation :
4
accueil.txt
tutoriaux.txt
recettes.txt
prive.txt
|
Le problème c'est que le code fonctionne seulement si la page demandée est la dernière écrite dans le fichier pages.txt et je ne sais pas du tout pourquoi. J'ai fait divers tests et on dirait que la boucle ne foncitonne que pour la dernière page écrite...
Merci de m'aider,
Oliparcol
EDIT: je soupçonne que c'est un problème avec la fonction fgets de la boucle mais je ne vois pas du tout d'où ça peut venir
Message édité par oliparcol le 20-04-2008 à 15:21:48