Ich weiß, dass Sie einen Header senden können, der dem Browser mitteilt, dass diese Seite verboten ist, wie:
header('HTTP/1.0 403 Forbidden');
Aber wie kann ich auch die benutzerdefinierte Fehlerseite anzeigen, die auf dem Server für diese Art von Fehler erstellt wurde?
Standardmäßig wird beim Senden des Headers nur eine weiße Seite angezeigt, aber ich erinnere mich, dass Sie vor einiger Zeit gelesen haben, dass Sie die Kundenfehlerseite verwenden können. Weiß das jemand?
php
header
http-status-code-403
NightHawk
quelle
quelle
Geben Sie einfach Ihren Inhalt nach dem Senden des Headers wieder.
header('HTTP/1.0 403 Forbidden'); echo 'You are forbidden!';
quelle
Location
Header, da dies den Antwortcode ändert.http_response_code wurde in PHP 5.4 eingeführt und hat die Sache viel einfacher gemacht!
http_response_code(403); die('Forbidden');
quelle
Dazu müssen Sie zunächst für den Browser angeben, dass der Benutzer einen Fehler 403 erhalten hat. Hierzu können Sie folgenden Code verwenden:
header("HTTP/1.1 403 Forbidden" );
Dann sendet das Skript "Fehler, Fehler, Fehler, Fehler, Fehler .......", sodass Sie es stoppen müssen. Sie können verwenden
exit;
Mit diesen beiden Zeilen sendet der Server einen Fehler und stoppt das Skript.
Vergessen Sie nicht: das emuliert den Fehler, aber Sie müssen ihn in einer .htaccess-Datei mit setzen
ErrorDocument 403 /error403.php
quelle
Viele der Antworten gesehen, aber die richtige ist, die vollständigen Optionen für den Header-Funktionsaufruf gemäß dem PHP-Handbuch bereitzustellen
void header ( string $string [, bool $replace = true [, int $http_response_code ]] )
Wenn Sie mit aufrufen
header('HTTP/1.0 403 Forbidden', true, 403);
Das normale Verhalten von HTTP 403, wie es mit Apache oder einem anderen Server konfiguriert wurde, würde folgen.
quelle
.htaccess
ErrorDocument 403 /403.html
quelle
Ich habe alle Antworten hier gelesen und keine von ihnen war eine vollständige Antwort auf meine Situation (die in dieser Frage genau gleich ist). Deshalb habe ich hier einige Teile der vorgeschlagenen Antworten gesammelt und die genaue Lösung gefunden:
Echo diesen Code vor jeder HTML-Ausgabe oder Header! (Selbst ein Leerzeichen führt dazu, dass PHP HTML / TEXT-HTTP-Header sendet und dies nicht funktioniert.) Der folgende Code sollte Ihre erste Zeile sein !
<?php header('HTTP/1.0 403 Forbidden'); $contents = file_get_contents('/home/your_account/public_html/domain.com/403.html', TRUE); exit($contents);
Jetzt haben Sie die genaue Lösung. Ich habe mit CPANEL Latest Visitors überprüft und verifiziert, und es ist als genaues 403-Ereignis registriert.
quelle
Um die Leistung des Servers zu minimieren, machen Sie es einfach:
.htaccess
ErrorDocument 403 "Forbidden"
PHP
header('HTTP/1.0 403 Forbidden'); die(); // or your message: die('Forbidden');
quelle
Verwenden Sie ModRewrite:
RewriteRule ^403.html$ - [F]
Stellen Sie einfach sicher, dass Sie ein leeres Dokument mit dem Namen "403.html" in Ihrem WWW-Stammverzeichnis erstellen. Andernfalls wird anstelle von 403 ein 404-Fehler angezeigt.
quelle
Ich verstehe, dass Sie ein Szenario mit ErrorDocument bereits in Ihrem Apache conf oder .htaccess definiert haben und diese Seiten anzeigen möchten, wenn Sie manuell einen 4xx-Statuscode über PHP senden.
Leider ist dies mit gängigen Methoden nicht möglich, da PHP den Header direkt an den Browser des Benutzers sendet (nicht an den Apache-Webserver), während ErrorDocument ein Display-Handler für den von Apache generierten http-Status ist.
quelle
Aktualisieren Sie die Seite nach dem Senden des 403:
<?php header('HTTP/1.0 403 Forbidden'); ?> <html><head> <meta http-equiv="refresh" content="0;URL=http://my.error.page"> </head><body></body></html>
quelle