Problème avec la un script tout simple [PHP] - PHP - Programmation
Marsh Posté le 20-04-2008 à 15:58:21
Problème résolu avec un rtrim sur la variable obtenue avec le fgets
Marsh Posté le 20-04-2008 à 16:11:10
Déja ta boucle et ton fichier texte qui verifie ne sert a rien, y a beaucoup plus simple :
Code :
|
Ton problème viens plutot de : $nombre_de_sites = fgets($page_liste);, fgets() ne donne pas le nombre de ligne dans ton fichier, ta boucle est donc fausse.
Marsh Posté le 20-04-2008 à 16:13:52
si en fait, la première ligne de mon fichier pages.txt est le nombre de sites total (cf pages.txt en bas du message). Mais merci beaucoup pour le nouveau code, effectivement, c'est beaucoup moins long hahahaha
Marsh Posté le 20-04-2008 à 16:17:20
Ah ok ,mais tu t'emmerdes pour rien avec ton fichier qui stocke tout, is_file() c'est bien plus rapide et au moins t'auras pas besoin de modifier un fichier texte à chaque fois que tu veut rajouter une page.
Marsh Posté le 20-04-2008 à 16:21:13
ouai tout à fait, je connaissais pas la fonction
Marsh Posté le 20-04-2008 à 16:24:23
Sinon, http://fr.php.net/file_get_contents is your friend.
Marsh Posté le 20-04-2008 à 15:12:14
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:
<?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"
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