OVH Cloud OVH Cloud

Pb headers

2 réponses
Avatar
Nobody
Salut,

Sur ma page index.php (qui sert de page d'erreur par défaut sur mon
site), j'affiche éventuellement un message d'erreur grâce à l'analyse de
ces variables

// Code >>
$url_erreur = $_SERVER["REQUEST_URI"];
$serveur_erreur = $_SERVER["REDIRECT_STATUS"];
// << Code

Sur une autre page, je redirige éventuellement en page d'accueil si les
paramètres fournis sont incorrects (la page en question sert à générer
des news et le format est fourni en paramètre)

// Code >>
$mode = $_GET ["mode"];
if (($mode != "rss") && ($mode != "atom"))
{
// On redirige vers l'index avec une erreur 404
header("HTTP/1.1 404 Not Found");
header("Location: http://localhost/ceugniet/");
}
// << Code

Problème : le code d'erreur 404 renvoyé n'affecte pas les variables
serveurs et il n'y a donc pas de message d'erreur affiché par la page
index.php.

Comment faire ?

2 réponses

Avatar
Cleo
header("HTTP/1.1 404 Not Found");
header("Location: http://localhost/ceugniet/");


Je pense qu'il y a une incohérence dans ces deux lignes.
[1] Avec la première, tu indiques au navigateur que la ressource demandée
est introuvable.
[2] Avec la seconde, tu demandes au navigateur de browser l'url
(http://localhost/ceugniet/)

Ce qui me semble équivalent à dire: [1] arrète de bosser, [2] continue à
bosser ... ??

Problème : le code d'erreur 404 renvoyé n'affecte pas les variables
serveurs et il n'y a donc pas de message d'erreur affiché par la page
index.php.


Forcement la commande header("Location: http://localhost/ceugniet/"), fait
un nouveau GET dans un contexte d'exécution (index.php) tout propre.

Comment faire ?
Comme début de piste, essaie de stocker l'<<état d'erreur>> dans la session

utilisateur si tu peux.

Pour revenir sur ton erreur, note que l'interprétation ["Location:
http://localhost/ceugniet/"] est faite par le client.

Avatar
loufoque
Cleo a dit le 05/10/2004 16:10:
Je pense qu'il y a une incohérence dans ces deux lignes.


Effectivement, avec un Location c'est un code 3xx qu'il faut mettre.