Hallo raketenwilli
probier doch mal mit
sub HTTP/1.1
funktioniert.
Hierbei kommt der default Zweig nicht.
Nein. Er wird gewählt. Frage an Dich: Spielt Dir ein Cache einen Streich?
Was macht denn exit(header('Status: 403', TRUE, 403)); falsch?
exit
gibt laut Handbuch einen Status zurück, nicht aber den HTTP-Statuscode.
Das wird benutzt, um beim Ausführen von PHP als cli-Skript in einer Shell oder als Subroutine signalisieren, ob das Skript fehlerfrei durchlief.
Wann immer der Wert auf eine Zahl verschieden von 0 gesetzt wird, wird also in einer Shell, Pipe, if- oder where-Konstrukt oder sonstwas dem Elternprozess ein fehlerhafter Programmablauf signalisiert:
#!/bin/bash
if [ php test.php ]; then
echo "Hurra";
else
echo "Fehler";
fi
gibt also „Fehler“ aus, wenn die test.php mit exit(1) beendet wird.
In einer Shell kann man den Status übrigens mit etwas wie echo $?
abfragen.
Also notierst Du sowas:
http_response_code( 403 );
echo( 'Status: 403' ); # Ausgabe auf der Webseite
exit;
oder sowas:
header( 'HTTP/1.1 403 Forbidden', TRUE, 403 );
echo( 'Status: 403' ); # Ausgabe auf der Webseite
exit;