Gestion des erreurs 404

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Gestion des erreurs 404

par bucheron » 26 mars 2007, 23:17

en fait j'ai trouvé ma réponse: la fonction exit() me permet, aprés affichage de ma page 404 perso, d'arréter l'exécution du script.

Merci en tout cas pour tes réponses

par Hubert Roksor » 26 mars 2007, 23:12

il est possible, une fois le code affiché, de stopper le script php ?
Je ne suis pas sûr de comprendre. Qu'entends-tu par "une fois le code affiché" ? Une fois la page affichée le script s'arrête.
sachant que je dois modifier pleins de page.
Là non plus je ne comprends pas, tu n'as qu'une seule page 404 non ?

par Invité » 26 mars 2007, 22:27

merci ca marche niquel.

Par contre j'aimerais savoir si il est possible, une fois le code affiché, de stopper le script php ?

Certe je peux faire un if, else mais je trouve que ca alourdie le code sachant que je dois modifier pleins de page.

par Hubert Roksor » 26 mars 2007, 21:24

Oui, je viens de remarquer le nom de la page vers laquelle tu rediriges. Si la page est une page d'erreur (et non une substitution) alors la réponse 404 est justifiée, à condition de ne pas changer l'URL, donc pas de "Location".

En fait tu peux simplement construire ta page tout à fait normalement et lui associer une réponse 404. Par exemple :
<?php

header($_SERVER['SERVER_PROTOCOL'] . ' 404 Not Found', true, 404);

?><html>
	<head>
		<title>Pas trouvé !</title>
	</head>
	<body>
		La page <?php echo $_SERVER['REQUEST_URI']; ?> n'existe pas.
	</body>
</html>
Et bien sûr ça ne t'empêche pas de suggérer sur la même page d'autres liens et même rediriger l'utilisateur après un certain temps. À toi d'agrémenter ;)

par bucheron » 26 mars 2007, 21:20

merci pour les infos.
Mais est il possible de mettre en plus une page d'erreur 404 personnalisée ?

par Hubert Roksor » 26 mars 2007, 21:16

Je vois plusieurs erreurs. Premièrement, je ne me rappelle pas qu'un en-tête "Status" existe dans HTTP. Ce que tu voulais faire était sûrement
header($_SERVER['SERVER_PROTOCOL'] . ' 404 Not Found', true, 404);
Ensuite, si tu utilises l'en-tête "Location" il est relativement logique de lui associer une réponse en 3xx comme 302 Found ou 303 See Other. Une redirection signifie que la page a été déplacée ou qu'une autre page peut lui être substituer, et j'imagine que PHP ou Apache le "corrige" pour toi.

Pour résumer, si tu veux rediriger automatiquement l'utilisateur alors 404 n'est pas une réponse appropriée. Il est important de noter que le code dérive de l'action, pas l'inverse. C'est d'après l'action que tu entreprends (rediriger, afficher un message d'erreur, etc...) que tu choisis le code qui correspond.

Gestion des erreurs 404

par bucheron » 26 mars 2007, 20:11

Bonjour,

je rencontre des problèmes quand à la gestion des mes erreurs 404 en php.
J'ai un fichier htaccess sur mon serveur qui gère les pages qui n'existe pas. De plus si l'url est accessible mais si les paramètres passés ne sont pas correcte, à ce moment la c'est le php qui prend le relais et "redirige" vers la page php.

Or si je teste mon erreur 404 avec l'outil de WRI
http://www.webrankinfo.com/outils/heade ... %2Fjeux%2F
il me sort une 302 !!!!

voici mon code php que je lance lorsqu'il y a détection d'un pb:

Code : Tout sélectionner

header("Status: 404 NOT FOUND"); header("Location: http://".NOM_HOTE."/errors/not-found.php");
quelqu'un aurait il une idée ?

Merci