sparh Posté 15 Février 2008 Posté 15 Février 2008 Bonjour, je travail sur ma page d'erreur. J'ai ajouté: ErrorDocument 400 /erreur.php?erreur=400ErrorDocument 401 /erreur.php?erreur=401ErrorDocument 402 /erreur.php?erreur=402ErrorDocument 403 /erreur.php?erreur=403ErrorDocument 404 /erreur.php?erreur=404ErrorDocument 405 /erreur.php?erreur=405ErrorDocument 500 /erreur.php?erreur=500ErrorDocument 501 /erreur.php?erreur=501ErrorDocument 502 /erreur.php?erreur=502ErrorDocument 503 /erreur.php?erreur=503ErrorDocument 504 /erreur.php?erreur=504ErrorDocument 505 /erreur.php?erreur=505 dans mon .htaccess et ça marche. Mais quand je test l'entête http, c'est 200 ok. Comment renvoyer une entête http en fonction de la variable $erreur que je récupère via GET ? Merci d'avance
pluriels Posté 15 Février 2008 Posté 15 Février 2008 en utilisant la fonction header() ? if(isset($_GET['erreur'])){ switch($_GET['erreur']){ case '501': header('le bon header de l'erreur'); break; case '502': header('le bon header de l'erreur'); break; // etc... }} un début de réponse, je n'ai pas vérifié
sparh Posté 15 Février 2008 Auteur Posté 15 Février 2008 (modifié) Oui merci la question était un peu conne! Voici ce que me renvoi l'outil du hub: ----------------------------------------------------------- URL: http://www.exemple.fr/zsegdvhgd HTTP/1.0 302 Moved Temporarily Date: Fri, 15 Feb 2008 20:20:53 GMT Server: Apache Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Expires: Thu, 19 Nov 1981 08:52:00 GMT Pragma: no-cache X-Powered-By: PHP/5.2.5 Set-Cookie: PHPSESSID=3b48f5435ca0bffe66034cda3e8aec8d; path=/ Location: http://www.exemple.fr/erreur.php?erreur=404 Connection: close Content-Type: text/html Redirection vers : URL: http://www.exemple.fr/erreur.php?erreur=404 HTTP/1.0 404 Not Found Date: Fri, 15 Feb 2008 20:20:53 GMT Server: Apache Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Expires: Thu, 19 Nov 1981 08:52:00 GMT Pragma: no-cache X-Powered-By: PHP/5.2.5 Set-Cookie: PHPSESSID=eb313b86d4d36b4418d3765237877114; path=/ Connection: close Content-Type: text/html ------------------------------------------------------ Voilà le code que j'utilise dans ma page index.php $test = mysql_num_rows($res_meta);if($test == "0"){header("HTTP/1.0 404 Not Found");header("Location: http://www.billionflash.fr/erreur.php?erreur=404");die();} Pourquoi il y a d'abord une redirection avant l'erreur 4004 ? C'est bon selon vous ? Modifié 15 Février 2008 par sparh
Anonymus Posté 15 Février 2008 Posté 15 Février 2008 .. Non, ton idée n'est pas bonne, tu fais croire au moteur que la première est en 302. Alors qu'elle est en 404. Ton problème est que pour l'exemple : URL: http://www.exemple.fr/zsegdvhgd Ca tombe bien sur un fichier, puisque t'es capable d'envoyer une 302. Au lieu de renvoyer une 302, il te faut renvoyer une 404, mais à partir de ce fichier Sinon, erreur 500, c'est quand t'as plus de serveur Quand t'as plus d'serveur, t'as plus d'fichier non plus
sparh Posté 16 Février 2008 Auteur Posté 16 Février 2008 (modifié) Salut, je vais ré expliquer mon problème depuis le début. http://www.exemple.fr/zsegdvhgd correspond en fait à la page http://www.exemple.fr/index.php?var=zsegdvhgd Quand on arrive sur ma page index.php je test l'existence de la variable zsegdvhgd (ou quoi que ce soit d'autre) dans ma base de onnée. Si la variable existe dans la base c'est bon on affiche la page sinon erreur 404 Voici le code que j'utilise en haut de ma page index.php $var = $_GET['var'];//la requete pour tester l'existence de la variable dans la bdd$test = mysql_num_rows($res_meta);if($test == "0") //$var ne correspond a aucun enregistrement donc erreur 404{header("HTTP/1.0 404 Not Found");header("Location: http://www.billionflash.fr/erreur.php?erreur=404");die();} Avec ce système quand la variable n'existe pas on est bien redirigé vers ma page erreur.php?erreur.404 En haut de erreur.php j'ai: if($_GET['erreur'] == "404"){header("HTTP/1.0 404 Not Found");} Mais quand je teste l'entête de ma page http://www.exemple.fr/zsegdvhgd (ou http://www.exemple.fr/index.php?var=zsegdvhgd ) c'est une 302 qui mène vers une 404 (cf résultat du test de l'entête http si dessus dans mon message précedent). Ou est l'erreur ? Modifié 16 Février 2008 par sparh
Dan Posté 16 Février 2008 Posté 16 Février 2008 Je ne vois pas pourquoi tu envoies deux fois une entête 404 ??? Une fois dans index.php juste avant ta redirection, et une fois encore au début de erreur.php. Il faut que tu supprimes l'un des deux. Je dirais celui de erreur.php !
Anonymus Posté 16 Février 2008 Posté 16 Février 2008 Au lieu de faire une redirection avec 'header', tu devrais peut être faire un include, carrément. Au moins, tu n'aurais pas ces problèmes (a priori..)
sparh Posté 17 Février 2008 Auteur Posté 17 Février 2008 (modifié) Bonjour, j'y comprends plus rien: J'ai donc 2 cas de figure: - http://www.test.fr/zsegdvhgd (das ce cas la page existe, on arrive sur la page on test l'existence de la variable zsegdvhgd dans la base de donnée, si elle n'existe pas erreur 404!) --> a priori dans ce cas mon fichier htaccess ne sert à rien ? - http://www.test.fr/forum/fgvc (dans ce cas la page n'existe vraiment pas, le fichier htaccess redirige donc automatiquement vers la page prévu à cet effet!) Dans ce second cas, quand je teste l'entête http, j'ai: URL: http://www.test.fr/forum/fgvcHTTP/1.0 302 FoundDate: Sun, 17 Feb 2008 07:46:11 GMTServer: ApacheLocation: http://www.test.fr/erreur.php?erreur=404Connection: closeContent-Type: text/html; charset=iso-8859-1Redirection vers :URL: http://www.test.fr/erreur.php?erreur=404HTTP/1.0 200 OKDate: Sun, 17 Feb 2008 07:46:11 GMTServer: ApacheCache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0Expires: Thu, 19 Nov 1981 08:52:00 GMTPragma: no-cacheX-Powered-By: PHP/5.2.5Set-Cookie: PHPSESSID=4a2be2a7d301f36d139f3e61fe3214f8; path=/Connection: closeContent-Type: text/htmlContent-Encoding: gzipContent-Length: 6170 ??? J'y comprends rien, pourquoi une redirection 302 ?? et pourquoi ma page erreur.php?erreur=404 renvoi finalement 200 ok !? J'ai pourtant bien spécifié dans mon htaccess ErrorDocument 404 http://www.test.fr/erreur.php?erreur=404 Modifié 17 Février 2008 par sparh
sparh Posté 17 Février 2008 Auteur Posté 17 Février 2008 C'est bon j'ai réussis Alors pour le .htacces il ne fallait pas mettre le chemin complet de la page d'erreur et dans mon fichier php au lieu de rediriger j'inclus ma page d'erreur (merci Anonymus) avec un die(). Merci à tous
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant