[PHP] Problème avec la un script tout simple

Problème avec la un script tout simple [PHP] - PHP - Programmation

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:
 

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
Reply

Marsh Posté le 20-04-2008 à 15:12:14   

Reply

Marsh Posté le 20-04-2008 à 15:58:21    

Problème résolu avec un rtrim sur la variable obtenue avec le fgets

Reply

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 :
  1. $page = "pages/" . $_GET['page'] . ".txt";
  2. if (is_file($page)) $erreur = 0;


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.

Reply

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 :lol:


Message édité par oliparcol le 20-04-2008 à 16:14:37
Reply

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. :)

Reply

Marsh Posté le 20-04-2008 à 16:21:13    

ouai tout à fait, je connaissais pas la fonction ;)


Message édité par oliparcol le 20-04-2008 à 16:21:22
Reply

Marsh Posté le 20-04-2008 à 16:24:23    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed