PHP: default Zweig in switch will nicht anspringen
bearbeitet von Raketenwilli> 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](https://www.php.net/manual/de/function.exit.php) 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:
~~~BASH
#!/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:
~~~PHP
http_response_code( 403 );
echo( 'Status: 403' ); # Ausgabe auf der Webseite
exit;
~~~
oder sowas:
~~~PHP
header('HTTP/1.1 403 Forbidden', TRUE, 403');
echo( 'Status: 403' ); # Ausgabe auf der Webseite
exit;
~~~
PHP: default Zweig in switch will nicht anspringen
bearbeitet von Raketenwilli> 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](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:
~~~BASH
#!/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:
~~~PHP
http_response_code( 403 );
echo( 'Status: 403' ); # Ausgabe auf der Webseite
exit;
~~~
oder sowas:
~~~PHP
header('HTTP/1.1 403 Forbidden', TRUE, 403');
echo( 'Status: 403' ); # Ausgabe auf der Webseite
exit;
~~~
PHP: default Zweig in switch will nicht anspringen
bearbeitet von Raketenwilli> Hallo raketenwilli
>
> probier doch mal mit
>
> sub HTTP/1.1
funktioniert.
> Hierbei kommt der default Zweig nicht.
>
>
> Was macht denn
> exit(header('Status: 403', TRUE, 403));
> falsch?
**exit**
gibt [laut Handbuch](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:
~~~BASH
#!/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:
~~~PHP
http_response_code( 403 );
echo( 'Status: 403' ); # Ausgabe auf der Webseite
exit;
~~~
oder sowas:
~~~PHP
header('HTTP/1.1 403 Forbidden', TRUE, 403');
echo( 'Status: 403' ); # Ausgabe auf der Webseite
exit;
~~~