Site en include et erreur 404... (noob) - PHP - Programmation
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 ?
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
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');
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. |
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
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 :
|
non ?
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
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 !!)
Marsh Posté le 24-09-2005 à 11:39:34
ReplyMarsh 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.
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 ?
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
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.
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é ?
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 !
Marsh Posté le 24-09-2005 à 11:53:04
pour récaputiler ça donne
Code :
|
c'est bien ça ?
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 ?
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) !
Marsh Posté le 24-09-2005 à 12:04:53
GANONEINC a écrit : y en a un |
t'as beau débuter, faut quand meme regarder un minimum la doc php !!!!
afbilou t'as mis la réponse
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)
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 ?
Marsh Posté le 24-09-2005 à 13:00:59
au feeling
Pour info j'apprend avec le site http://www.siteduzero.com/php/
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 :
|
je vois pas ou est l'erreur ,, vous pouvez m'aider ?
Marsh Posté le 24-09-2005 à 17:42:36
Compte les parenthèses.
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
Marsh Posté le 24-09-2005 à 18:22:22
c'est ç la code qu'il te faut..
Code :
|
Marsh Posté le 24-09-2005 à 19:56:59
bon j'ai essayé avec ça (j'ai recompté les parenthèses)
ça donne
Code :
|
mais voila....
Que dois je faire ?
Utiliser la méthode de neobaub ?
Marsh Posté le 24-09-2005 à 20:45:41
ReplyMarsh 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 ?
Marsh Posté le 24-09-2005 à 21:35:33
neobaub a écrit : c'est ç la code qu'il te faut..
|
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
Bref ... la methode avec in_array est la meilleure
Marsh Posté le 24-09-2005 à 21:46:03
Code :
|
Marsh Posté le 24-09-2005 à 22:18:07
(!isset et empty, c'est redondant)
Marsh Posté le 24-09-2005 à 22:19:15
dans ce cas:
Code :
|
en gros j'ai rajouter une option pr verifier que le mec essai pas de lire dans un autre repertoire ;-]
Marsh Posté le 24-09-2005 à 22:22:01
end(explode('/',$_GET['page'])) == $_GET['page'])
Marsh Posté le 24-09-2005 à 22:26:37
Utilisez la fonction quote quand vous répondez, on sait pas à qui vous parlez là.
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 ?
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
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 :
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
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 !