Tom's Guide > Forum > Programmation > Problème de variables en php
Mot :    Pseudo :           
 

Voila, je voudrai faire une variable sur une de mes pages web. Je voudrai que par exemple, lorsqu'on tape l'URL suivante :
http://nomdusite.com/accessoires.php?page=collier
J'aimerais que s'ouvre la page " accessoires" avec, à un endroit choisi, le fichier collier.txt
Pouvez vous m'aidez???
Merci d'avance

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

Un peu de PHP...

Code :
  1. <?php
  2. # Valeur par défaut et sécurisation
  3. if(!isset($_GET['page'])) $page = "default";
  4. else $page = stripslashes(htmlentities($_GET['page']));
  5. $filepath = $page.".txt";
  6. if(file_exists($filepath))
  7. {
  8.     # Lecture du fichier
  9.     $file = fopen($filepath, "r" );
  10.     while(!feof($file))
  11.     {
  12.           echo fgets($file);
  13.     }
  14.      fclose($file);
  15. }
  16. else
  17. {
  18.     echo 'Error : file does not exists !';
  19. }
  20. ?>



A noter qu'il doit être possible de plus sécuriser tout cela, histoire de ne pas pouvoir afficher de fichiers textes d'un autre site (avec une adresse du genre [...]page=http://monsite.com/fichiertexte). Même si cela n'est pas dangereux en soi.

Répondre à Sethpolma

C'est super! merci! mais bizarrement, ca marque sans arret :Error : file does not exists !

Répondre à Firey

NON NON j'ai rien dit ca marche!!

Répondre à Firey

De rien ! :)

Sinon, pour le petit défaut de sécurité, une solution facile consiste à remplacer

Code :
  1. $filepath = $page.'.txt';


par

Code :
  1. $path = 'http://adressedusite/dossier/';
  2. $filepath = $path.$page.'.txt';

Répondre à Sethpolma

Donc ca permettra de le mettre dans un répertoire? Mais c'est super!
Mille fois merci!

Répondre à Firey

Et est ce possible qui si il y a seulement accessoires.php alors ca met avec un fichier exemple : index enfin, que si on ne met que accessoires.php ca revient au même que accessoires>.php?page=index
c'est possible?
Je sais que je ne m'exprime pas très bien...

Répondre à Firey

oui, c'est possible.
Il te suffit d'ajouter une condition qui va tester si la variable existe et est remplie.

Code :
  1. <?php
  2. // Définition du chemin d'accès
  3. $path = "./textes/";
  4. // Définition de l'extension
  5. $ext = ".txt";
  6. if (!empty($_GET['page'])) {
  7.   // on envoit un nom de page, c'est bon
  8.   $page = urldecode($_GET['page']);
  9. } else {
  10.   // pas de page demandée, on fixe une valeur par défaut
  11.   $page = 'index';
  12. }
  13. if (file_exists($path.$page.$ext)) {
  14.   // le fichier existe, on l'inclut
  15.   include $path.$page.$ext;
  16. } else {
  17.   // le fichier n'existe pas, on inclut celui par défaut
  18.   include $path."index".$ext;
  19. }
  20. ?>

------------------------------ Réseau IRC Francophone | g33k-zone
Défiez-moi donc !
Répondre à crazycat@idn

Tien, avec un switch ca va etre plus propre, et si il y a rien, il te met l'index!

Code :
  1. <?php
  2.     // page par default
  3.     $page = "index"
  4.     // si la page existe, on affecte la variable
  5.     if(isset($_GET['page']))
  6.     {
  7.         $page = $_GET['page'];
  8.     }
  9.     // on switch sur la variable page
  10.     switch($page)
  11.     {
  12.         // si page == collier, on inclue le fichier collier.txt
  13.         case 'collier':
  14.             include('collier.txt');
  15.         break;
  16.         // si page == breacelet, on inclue le fichier bracelet.txt
  17.         case 'bracelet':
  18.             include('bracelet.txt');
  19.         break;
  20.         // si page n'est ni collier, ni bracelet, ni aucun des case, on affiche index.php
  21.         default:
  22.             include('index.php');
  23.         break;
  24.     }
  25. ?>

Répondre à mr_keyser

Oui mais non...
Dans le cas d'un contenu évolutif, ça veut dire que chaque nouvel ajout va demander une édition du code...

------------------------------ Réseau IRC Francophone | g33k-zone
Défiez-moi donc !
Répondre à crazycat@idn

oui c'est sur, mais si les extensions changent? qu'il lui prend l'idée d'inclure d'autres .php ou des pdf ou je sais pas quoi? Tu va passer l'extension en paramètre? Pareil pour le dossier qui contient les fichiers ou page! Si il se met à organiser son espace de stockage!

Répondre à mr_keyser

Par définition, ce type de scripts est fait pour ouvrir UN type de fichiers dans UN répertoire précis.
Si on veut adapter pour avoir une évolutivité, on peut alors passer d'autres paramètres (qui eux seront limités) et là oui, on utilise des switchs.
Par exemple, tu fais un script qui permet de voir les bijoux, les accessoires, le maquillage (et pas fou, tu forces le .txt).
Tes urls deviennent:
- ./objets.php?categ=bijou&objet=bracelet
- ./objets.php?categ=bijou&objet=collier
- ./objets.php?categ=access&objet=sac
Tu peux faire un switch sur categ (les catégories évolueront relativement peu) qui déterminera le path et utiliser mon système pour les objets (donc les fichiers).

Après, tout est une question d'évolutivité.

------------------------------ Réseau IRC Francophone | g33k-zone
Défiez-moi donc !
Répondre à crazycat@idn

Hmm c'est vrai, moi j'ai l'habitude d'utiliser un switch pour un peu tout et t'en pis si il faut éditer le code, même pas peur lol
Après,c'est vrai que ca dépend de l'application et du besion.

Répondre à mr_keyser

ne le prend pas mal, mais tu as une optique de webmaster "amateur" pour des sites qui ne seraient gérés que par une seule personne (qui donc maitrise le code).

Mais si tu veux faire un site de contenu avec plusieurs rédacteurs, il faut un système qui s'adapte tout seul :)

------------------------------ Réseau IRC Francophone | g33k-zone
Défiez-moi donc !
Répondre à crazycat@idn

Je le prend pas mal, j'assume tout à fait mon amateurisme :D
Mais c'est vrai que j'ai l'habitude de faire des zones d'administration, gestion de contenu et tout, mais le developpement, c'est moi tout seul, donc le code, c'est le mien! Si un mec passe dernière, il se pend lol
Quoi que je commente bien ;)

Répondre à mr_keyser

et pour les iumages? si on veut faire la même chose sauf que c'est une image???

Répondre à Firey

au lieu du include, mettre la balise <img>
en se basant sur le code de crazycat ca donnerai:

Code :
  1. if (file_exists($path.$page.$ext)) {
  2.     // le fichier existe, on l'inclut
  3.     echo "<img src='$path.$page.$ext'/>";
  4. } else {
  5.     // le fichier n'existe pas, on inclut celui par défaut
  6.     echo "<img src='$path.$index.$ext'/>";
  7. }


sauf que contrairement au fichier texte, les images doivent etre accessible depuis le web

Répondre à coca25

euh... on le remplace avec quoi???

Répondre à Firey
Tom's Guide > Forum > Programmation > Problème de variables en php
Aller à :

Il y a 2463 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens