Raketenwilli: PHP: default Zweig in switch will nicht anspringen

Beitrag lesen

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;