Votre question

Problème de variables en php

Tags :
  • Programmation
Dernière réponse : dans Programmation
29 Décembre 2006 11:18:54

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

Autres pages sur : probleme variables php

29 Décembre 2006 13:55:07

Un peu de PHP...

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


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.
29 Décembre 2006 14:51:22

C'est super! merci! mais bizarrement, ca marque sans arret :Error : file does not exists !
Contenus similaires
29 Décembre 2006 14:52:41

NON NON j'ai rien dit ca marche!!
29 Décembre 2006 15:32:08

De rien ! :) 

Sinon, pour le petit défaut de sécurité, une solution facile consiste à remplacer
  1. $filepath = $page.'.txt';

par
  1. $path = 'http://adressedusite/dossier/';
  2. $filepath = $path.$page.'.txt';
29 Décembre 2006 18:59:23

Donc ca permettra de le mettre dans un répertoire? Mais c'est super!
Mille fois merci!
5 Janvier 2007 09:41:57

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...
a c 145 L Programmation
5 Janvier 2007 09:58:27

oui, c'est possible.
Il te suffit d'ajouter une condition qui va tester si la variable existe et est remplie.
  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. ?>
5 Janvier 2007 10:04:40

Tien, avec un switch ca va etre plus propre, et si il y a rien, il te met l'index!
  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. ?>
a c 145 L Programmation
5 Janvier 2007 10:07:23

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

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!
a c 145 L Programmation
5 Janvier 2007 10:20:14

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é.
5 Janvier 2007 10:25:13

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.
a c 145 L Programmation
5 Janvier 2007 10:35:16

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 :) 
5 Janvier 2007 10:46:18

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 ;) 
29 Janvier 2007 08:26:53

et pour les iumages? si on veut faire la même chose sauf que c'est une image???
29 Janvier 2007 14:11:06

au lieu du include, mettre la balise <img>
en se basant sur le code de crazycat ca donnerai:
  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
29 Janvier 2007 19:26:48

euh... on le remplace avec quoi???
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS