Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1502 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°1720511
oliparcol
Murphy's Law Master
Posté le 20-04-2008 à 15:12:14  profilanswer
 

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
mood
Publicité
Posté le 20-04-2008 à 15:12:14  profilanswer
 

n°1720530
oliparcol
Murphy's Law Master
Posté le 20-04-2008 à 15:58:21  profilanswer
 

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

n°1720542
masterpsx
Aigloun foutougrafe
Posté le 20-04-2008 à 16:11:10  profilanswer
 

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.

n°1720546
oliparcol
Murphy's Law Master
Posté le 20-04-2008 à 16:13:52  profilanswer
 

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
n°1720549
masterpsx
Aigloun foutougrafe
Posté le 20-04-2008 à 16:17:20  profilanswer
 

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

n°1720550
oliparcol
Murphy's Law Master
Posté le 20-04-2008 à 16:21:13  profilanswer
 

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


Message édité par oliparcol le 20-04-2008 à 16:21:22
n°1720555
sielfried
Posté le 20-04-2008 à 16:24:23  profilanswer
 

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

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

 

Sujets relatifs
problème d'execution d'un programmeProblème décallage IE par rapport à FF et Opera
[MySQL] - Problème aux extrêmes...problème avec une variable
problème de connect avec le SIGNAL itemClicked(item) avec QtMapping NHibernate probleme <composite-id>
Où trouver des Developpeur PHP Programmation Orientée Objet ?script sur texte
script pour faire apparaître des blocs de texteproblème de connection avec une bdd oracle
Plus de sujets relatifs à : [PHP] Problème avec la un script tout simple


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR