(noob)Site en include et erreur 404...

Site en include et erreur 404... (noob) - PHP - Programmation

Marsh Posté le 24-09-2005 à 11:25:14    

Salut à tous , j'ai enfin décider de passer mon site en php (tout doucement) en commencant par refaire l'architecture globale en utilisant des include sur ma page index.php
 
En clair :

Code :
  1. <? //debut des includes
  2.     if ($_GET['page'] == "charte" ) //include charte
  3.     {
  4.         include("charte.php" );
  5.     }
  6.    
  7.     if ($_GET['page'] == "membres" ) //include membres
  8.     {
  9.         include("membres.php" );
  10.     }
  11.    
  12.     if ($_GET['page'] == "inscription" ) //include Inscriptions
  13.     {
  14.         include("inscription.php" );
  15.     }
  16.    
  17. if ($_GET['page'] == "recits" ) //include récits
  18.     {
  19.         include("recits.php" );
  20.     }
  21.     if ($_GET['page'] == "screen" ) //include screenshots
  22.     {
  23.         include("screen.php" );
  24.     }
  25. if ($_GET['page'] == "phpbb2" ) //include phpBB2
  26.     {
  27.         include("phpbb2.php" );
  28.     }
  29.     if ($_GET['page'] == "archives" ) //include Archives des news
  30.     {
  31.         include("archives.php" );
  32.     }
  33.     if ($_GET['page'] == "videos" ) //include Videos
  34.     {
  35.         include("videos.php" );
  36.     }
  37.     if ($_GET['page'] == "download" ) //include Download
  38.     {
  39.         include("download.php" );
  40.     }
  41. if ($_GET['page'] == "contacts" ) //include Contacts
  42.     {
  43.         include("contacts.php" );
  44.     }
  45.     if ($_GET['page'] == "google" ) //include Rechercher avec google.
  46.     {
  47.         include("google.php" );
  48.     }
  49. if ($_GET['page'] == "guest" ) //include Livre d'Or
  50.     {
  51.         include("guest.php" );
  52.     } 
  53. if ($_GET['page'] == "wallpapers" ) //Wallapapers Warcraftnet
  54.     {
  55.         include("wallpapers.php" );
  56.     } 
  57. if ($_GET['page'] == "goodies" ) //include Goodies
  58.     {
  59.         include("goodies.php" );
  60.     }
  61. if ($_GET['page'] == "partenaires" ) //include Partenaires
  62.     {
  63.         include("partenaires.php" );
  64.     }
  65. if ($_GET['page'] == "about" ) //include Partenaires
  66.     {
  67.         include("about.php" );
  68.     }
  69.     ?>


 
et moi j'aimerai bien que si la variable est nul afficher ma page index normal avec le contenue normal d'une page index.
 
Je pensai à un petit

Code :
  1. else
  2. {
  3. include("index2.php" )
  4. }


 
 
mais apres je me suis dit que mettre pour une page erreur 404 en cas de variable fausse ? et la je suis concé aidez moi !!!
 
Il faudrait un truc du genre si variable fausse on include 404.php
mais pas si varriable vide...
 
Je vous conjure aidez moi !

Reply

Marsh Posté le 24-09-2005 à 11:25:14   

Reply

Marsh Posté le 24-09-2005 à 11:28:02    

Les pages d'erreurs 404 personnalisées se font via un fichier htaccess, recherche sur google tu devrais trouver plein d'explications.
 
Sinon pour vouloir a tout prix mettre toutes tes pages en include ? [:pingouino]


---------------
http://www.alsacreations.com , http://www.openweb.eu.org. Mon CV : http://cv.roane-irkana.net/. Exemple à ne surtout pas suivre : www.worldinternet.be
Reply

Marsh Posté le 24-09-2005 à 11:29:50    

toute les pages en include c'est pour moins m'embeter à refaire chaque page une par une.
 
La si je rajoute des choses dans l'apparance du site ou dans les menus , il suffit que je modofit index.php pour que tout le site sois changé alors qu'avant fallait éditer une par une chaques pages

Reply

Marsh Posté le 24-09-2005 à 11:30:12    

if (in_array($_GET['page'] , array('charte' , 'membres' , 'inscription' , 'recits' , ... ))))
     include($_GET['page'].'.php');
elseif (!empty($_GET['page']))
     include('erreur_vilin_visiteur.php');
else
     include('index.php');


Message édité par afbilou le 24-09-2005 à 11:37:14
Reply

Marsh Posté le 24-09-2005 à 11:32:21    

plainsofpain a écrit :

Les pages d'erreurs 404 personnalisées se font via un fichier htaccess, recherche sur google tu devrais trouver plein d'explications.
 
Sinon pour vouloir a tout prix mettre toutes tes pages en include ? [:pingouino]


 
 
comme ca si tu change le design, rajouter des trucs dans le menu,etc...  tu modifie que le fichier index
 
sinon si j'etait toi j'utiliserai plutot un switch


Message édité par pegasus32 le 24-09-2005 à 11:34:18
Reply

Marsh Posté le 24-09-2005 à 11:36:00    

c'est bon j'ai trouvé pour le 404
 
je peut faire un truc du genre
 

Code :
  1. ErrorDocument 404 index.php?page=404

non ?

Reply

Marsh Posté le 24-09-2005 à 11:38:34    

fait le plutot avec un .htaccess, comme ca la page d'erreur s'affichera aussi si le visiteur essaie d'acceder à nimportequoi.nimp

Reply

Marsh Posté le 24-09-2005 à 11:39:26    

Tu ne peux pas passer par un .htaccess avec ce ke tu veux faire !
Une erreur 404 se declenche lorsqu'aucune page ne correspond a l'url que tu as fournis (les arguments fournis a la page ne sont pas pris en compte ... et ca se comprend !!)

Reply

Marsh Posté le 24-09-2005 à 11:39:34    

c'est ce que j'ai proposé juste au dessu de ton reply. mais est il correct ?

Reply

Marsh Posté le 24-09-2005 à 11:41:27    

Moi pour faire a meme chose, j'inclue le haut de page, le menu et le bas de page dans chaque script.
 
Enfin, avant de séparer complètement les traitements de l'affichage avec les templates.


---------------
http://www.alsacreations.com , http://www.openweb.eu.org. Mon CV : http://cv.roane-irkana.net/. Exemple à ne surtout pas suivre : www.worldinternet.be
Reply

Marsh Posté le 24-09-2005 à 11:41:27   

Reply

Marsh Posté le 24-09-2005 à 11:41:32    

/me parle dans le vide ...

Reply

Marsh Posté le 24-09-2005 à 11:42:35    

donc il faut un .htaccess pour une adresse fausse et un  
elseif (!empty($_GET['page']))  
     include('404.php');  
non ?

Reply

Marsh Posté le 24-09-2005 à 11:43:04    

GANONEINC a écrit :

c'est ce que j'ai proposé juste au dessu de ton reply. mais est il correct ?


tout dépend si tu veut que l'erreur 404 s'affiche uniquement en cas de mauvais parametre de la page index, ou alors des que le visiteur tente 'acceder à une page qui n'existe pas.
 
dans le 1er cas ton systeme est ok, dans le 2eme cas il faut passer par un  fichier .htaccess qui renvoie le visiteur vers une page erreur404.php par exemple


Message édité par pegasus32 le 24-09-2005 à 11:44:04
Reply

Marsh Posté le 24-09-2005 à 11:45:43    

Oui !
Et profite en pour virer tes series de if plus ke fastidieuses a ecrire et a maintenir et a les remplacer par ce que je t'ai mis klk posts plus hauts.

Reply

Marsh Posté le 24-09-2005 à 11:50:18    

les array je métrise pas trop , moi ça m'embete pas de retaper if des centaines de dois , donc pourquoi faire simple quand on peut faire compliqé ?

Reply

Marsh Posté le 24-09-2005 à 11:52:09    

bah utilise des elseif au moins ... parce que la quoiqu'il arrive le script se tape tous les tests a faire ... c'est franchement pas malin !

Reply

Marsh Posté le 24-09-2005 à 11:53:04    

pour récaputiler ça donne  
 

Code :
  1. <? //debut des includes
  2.     if ($_GET['page'] == "charte" ) //include charte
  3.     {
  4.         include("charte.php" );
  5.     }
  6.    
  7.     if ($_GET['page'] == "membres" ) //include membres
  8.     {
  9.         include("membres.php" );
  10.     }
  11.    
  12.     if ($_GET['page'] == "inscription" ) //include Inscriptions
  13.     {
  14.         include("inscription.php" );
  15.     }
  16.    
  17. if ($_GET['page'] == "recits" ) //include récits
  18.     {
  19.         include("recits.php" );
  20.     }
  21.     if ($_GET['page'] == "screen" ) //include screenshots
  22.     {
  23.         include("screen.php" );
  24.     }
  25. if ($_GET['page'] == "phpbb2" ) //include phpBB2
  26.     {
  27.         include("phpbb2.php" );
  28.     }
  29.     if ($_GET['page'] == "archives" ) //include Archives des news
  30.     {
  31.         include("archives.php" );
  32.     }
  33.     if ($_GET['page'] == "videos" ) //include Videos
  34.     {
  35.         include("videos.php" );
  36.     }
  37.     if ($_GET['page'] == "download" ) //include Download
  38.     {
  39.         include("download.php" );
  40.     }
  41. if ($_GET['page'] == "contacts" ) //include Contacts
  42.     {
  43.         include("contacts.php" );
  44.     }
  45.     if ($_GET['page'] == "google" ) //include Rechercher avec google.
  46.     {
  47.         include("google.php" );
  48.     }
  49. if ($_GET['page'] == "guest" ) //include Livre d'Or
  50.     {
  51.         include("guest.php" );
  52.     } 
  53. if ($_GET['page'] == "wallpapers" ) //Wallapapers Warcraftnet
  54.     {
  55.         include("wallpapers.php" );
  56.     } 
  57. if ($_GET['page'] == "goodies" ) //include Goodies
  58.     {
  59.         include("goodies.php" );
  60.     }
  61. if ($_GET['page'] == "partenaires" ) //include Partenaires
  62.     {
  63.         include("partenaires.php" );
  64.     }
  65. if ($_GET['page'] == "about" ) //include A propos de
  66.     {
  67.         include("about.php" );
  68.     }
  69. elseif (!empty($_GET['page']))
  70. {
  71.         include("404.php" );
  72. }
  73. else
  74. {
  75.     include("index2.php" );
  76. }
  77. ?>


 
c'est bien ça ?

Reply

Marsh Posté le 24-09-2005 à 11:53:52    

non c'est nul :) ... faut AU MOINS mettre des elseif !

Reply

Marsh Posté le 24-09-2005 à 11:56:05    

y en a un
 
 
enfin n'oublis pas que je débute , tu pourrai me donner rien qu'un expemple de ou mettre les elseif ?

Reply

Marsh Posté le 24-09-2005 à 12:00:37    

Essaie plutot de comprendre ...
 
Dans ton exemple, si on est dans le cas ou $page (la flemme d'ecrire le $_GET[...] a chake fois) a pour valeur charte, il va inclure charte.php et ensuite effectuer TOUS les autres tests de condition des ifs suivants (completement inutile).
 
Avec des elseif le script s'arreterait au premier test valide et ne ferait pas les suivants.
 
As-tu fait l'effort de comprendre ce que fait le petit exemple de 4 lignes que j'ai donné et qui fait tout ce que fait ton exemple de 150 lignes ... en mieux (plus rapide) !


Message édité par afbilou le 24-09-2005 à 12:01:13
Reply

Marsh Posté le 24-09-2005 à 12:04:53    

GANONEINC a écrit :

y en a un
 
 
enfin n'oublis pas que je débute , tu pourrai me donner rien qu'un expemple de ou mettre les elseif ?


t'as beau débuter, faut quand meme regarder un minimum la doc php !!!!
afbilou t'as mis la réponse
 

Reply

Marsh Posté le 24-09-2005 à 12:05:15    

Effectivement avec pleins de if il continue...
 
Avc ton exemple , le lien index.php?page=exemple va déteminer la variable page dans ton array par exemple c'est bien ça ?
 
et dire $page=exemple
(pour la premiere partie la je vais manger je re)


Message édité par GANONEINC le 24-09-2005 à 12:06:09
Reply

Marsh Posté le 24-09-2005 à 12:12:23    

Tu devines tout au feeling ou bien tu t'appuies sur la doc (extrement bien faite et pratique) de PHP ?

Reply

Marsh Posté le 24-09-2005 à 13:00:59    

au feeling  
 
Pour info j'apprend avec le site http://www.siteduzero.com/php/

Reply

Marsh Posté le 24-09-2005 à 17:26:34    

Dite j'ai fait ce que on m'a indiqué avec les arrays mais j'ai ça comme erreur :
 
 
Parse error: parse error in c:\war php\index3.php on line 178
 
et voici la ligne 178
 

Code :
  1. if (in_array($_GET['page'] , array('charte' , 'membres' , 'inscription' , 'recits' , 'screen' , 'phpbb2' , 'archives' , 'videos' , 'download' , 'contacts' , 'google' , 'guest' , 'wallpapers' , 'goodies' , 'partenaires' , 'about' ))))


 
je vois pas ou est l'erreur ,, vous pouvez m'aider ?


Message édité par GANONEINC le 24-09-2005 à 17:26:48
Reply

Marsh Posté le 24-09-2005 à 17:42:36    

Compte les parenthèses.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 24-09-2005 à 18:10:23    

d'où l'utilité d'avoir un éditeur de texte qui affiche les correspondances parentheses ouvrantes/fermantes

Reply

Marsh Posté le 24-09-2005 à 18:22:22    

c'est ç la code qu'il te faut..

Code :
  1. <?php
  2. if(empty($_GET['page'])) /* pas de nom de page, le mec est sur la page d'accueil */
  3. {
  4. include('accueil.php');
  5. }
  6. else //la page a été definie dans l'url
  7. {
  8. if(file_exists($_GET['page'].'.php')) /*On regarde si la page $_GET['page'].php existe bien...*/
  9. {
  10. //comme oui, on l'inclut:
  11. include($_GET['page'].'.php');
  12. }
  13. else //si elle existe pas:
  14. {
  15. include('erreur404.php'); //on met le mec sur la page d'erreur...
  16. }
  17. }

Reply

Marsh Posté le 24-09-2005 à 19:56:59    

bon j'ai essayé avec ça (j'ai recompté les parenthèses)
 
ça donne

Code :
  1. if (in_array($_GET['page'] , array('charte' , 'membres' , 'inscription' , 'recits' , 'screen' , 'phpbb2' , 'archives' , 'videos' , 'download' , 'contacts' , 'google' , 'guest' , 'wallpapers' , 'goodies' , 'partenaires' , 'about' )))


 
 
http://img248.imageshack.us/img248/652/war4zw.jpg mais voila....
 
 
Que dois je faire ?
 
Utiliser la méthode de neobaub ?

Reply

Marsh Posté le 24-09-2005 à 20:45:41    

Reply

Marsh Posté le 24-09-2005 à 21:01:24    

C'est marrant, cette mise en page me rappelle quelque chose. Ce n'est pas toi que gatsusat et moi avaons croisé il y a pas mal de temps, et auquel on a proposé des mises en pages full css ?


---------------
http://www.alsacreations.com , http://www.openweb.eu.org. Mon CV : http://cv.roane-irkana.net/. Exemple à ne surtout pas suivre : www.worldinternet.be
Reply

Marsh Posté le 24-09-2005 à 21:35:33    

neobaub a écrit :

c'est ç la code qu'il te faut..

Code :
  1. <?php
  2. if(empty($_GET['page'])) /* pas de nom de page, le mec est sur la page d'accueil */
  3. {
  4. include('accueil.php');
  5. }
  6. else //la page a été definie dans l'url
  7. {
  8. if(file_exists($_GET['page'].'.php')) /*On regarde si la page $_GET['page'].php existe bien...*/
  9. {
  10. //comme oui, on l'inclut:
  11. include($_GET['page'].'.php');
  12. }
  13. else //si elle existe pas:
  14. {
  15. include('erreur404.php'); //on met le mec sur la page d'erreur...
  16. }
  17. }



et si on met index.php?page=admin/admin ... c'est bete mais ... tu l'as dans l'cul :) pourtant on avait bien pris soin de mettre un .htaccess dans le repertoire admin  :whistle:
Bref ... la methode avec in_array est la meilleure :)


Message édité par afbilou le 24-09-2005 à 21:36:50
Reply

Marsh Posté le 24-09-2005 à 21:46:03    

Code :
  1. if ( !isset($_GET['page']) || empty($_GET['page']) )
  2.      include('index.php');
  3. elseif ( in_array($_GET['page'] , array('charte' , 'membres' , 'inscription' , 'recits' , ... )) )
  4.      include($_GET['page'].'.php');
  5. else
  6.      include('vilin.php');

Reply

Marsh Posté le 24-09-2005 à 22:18:07    

(!isset et empty, c'est redondant)


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 24-09-2005 à 22:19:15    

dans ce cas:

Code :
  1. * <?php
  2.     * if(empty($_GET['page'])) /* pas de nom de page, le mec est sur la page d'accueil */
  3.     * {
  4.     * include('accueil.php');
  5.     * }
  6.     * else //la page a été definie dans l'url
  7.     * {
  8.     * if(file_exists($_GET['page'].'.php') && end(explode('/',$_GET['page'])) == $_GET['page']) /*On regarde si la page $_GET['page'].php existe bien et est bien dans le dossier racine...*/
  9.     * {
  10.     * //comme oui, on l'inclut:
  11.     * include($_GET['page'].'.php');
  12.     * }
  13.     * else //si elle existe pas:
  14.     * {
  15.     * include('erreur404.php'); //on met le mec sur la page d'erreur...
  16.     * }
  17.     * }
  18.     * ?>


en gros j'ai rajouter une option pr verifier que le mec essai pas de lire dans un autre repertoire ;-]


Message édité par neobaub le 24-09-2005 à 22:21:21
Reply

Marsh Posté le 24-09-2005 à 22:19:58    

absolument pas !

Reply

Marsh Posté le 24-09-2005 à 22:22:01    

end(explode('/',$_GET['page'])) == $_GET['page'])  
 
[:mlc]


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 24-09-2005 à 22:22:14    

et pouruqoi pas stp ^^?

Reply

Marsh Posté le 24-09-2005 à 22:26:37    

Utilisez la fonction quote quand vous répondez, on sait pas à qui vous parlez là. [:figti]


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 24-09-2005 à 22:27:30    

neobaub a écrit :

et pouruqoi pas stp ^^?


je repondais a sielfried.
 
et pis si je fais un index.php?page=index ... tu vas encore rajouter une n-ieme condition dans ton if pour ce cas la aussi ? ou bien tu laisses tomber  le file_exists et tu prends l'array ? :p
 
parce k'on pourrait faire un index.php?page=.htaccess aussi xD comme ca un utilisateur aux droits restreints mais qui peut visiter le repertoire a acces aux passwords du htacces s'il y en a :D

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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