81 votes

Imiter une page d'erreur 403

Je sais que vous pouvez envoyer un en-tête indiquant au navigateur que cette page est interdite comme suit :

header('HTTP/1.0 403 Forbidden');

Mais comment puis-je afficher également la page d'erreur personnalisée qui a été créée sur le serveur pour ce type d'erreur ?

Par défaut, envoyer simplement l'en-tête affiche une page blanche, mais je me souviens avoir lu il y a un moment que vous pouvez utiliser la page d'erreur personnalisée. Quelqu'un sait-il ?

77voto

alex Points 186293

Il suffit d'écho de votre contenu après avoir envoyé l'en-tête.

header('HTTP/1.0 403 Interdit');

echo 'Vous êtes interdit!';

interdit

66voto

Marcio Simao Points 2039

http_response_code a été introduit en PHP 5.4 et a grandement facilité les choses!

http_response_code(403);
die('Interdit');

29voto

Ibrahim AshShohail Points 850

Inclure la page d'erreur personnalisée après avoir modifié l'en-tête.

20voto

Pyrrha Points 41

Pour cela, vous devez d'abord indiquer au navigateur que l'utilisateur reçoit une erreur 403. Pour cela, vous pouvez utiliser ce code :

header("HTTP/1.1 403 Forbidden" );

Ensuite, le script envoie "error, error, error, error, error......", vous devez donc l'arrêter. Vous pouvez utiliser

exit;

Avec ces deux lignes, le serveur envoie une erreur et arrête le script.

N'oubliez pas : cela émule l'erreur, mais vous devez la définir dans un fichier .htaccess, avec

ErrorDocument 403 /error403.php

10voto

Beaucoup de réponses ont été vues, mais la bonne consiste à fournir toutes les options complètes pour l'appel de la fonction d'en-tête telles que spécifiées dans le manuel de PHP

void header ( string $string [, bool $replace = true [, int $http_response_code ]] )

Si vous invoquez avec

header('HTTP/1.0 403 Forbidden', true, 403);

le comportement normal du code HTTP 403 tel que configuré avec Apache ou tout autre serveur serait suivi.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X