Raketenwilli: PHP: default Zweig in switch will nicht anspringen

Beitrag lesen

<?php
$_GET['kap'] =  "hom324234";
if( isset( $_GET['kap'] ) ) {

	switch ( $_GET['kap'] ) { 

		case "hom": echo( 'kapitel/kap_home.php' ); break;

		case "ba1": echo( 'kapitel/kap_basics1.php' ); break;

		case "ba2": echo( 'kapitel/kap_basics2.php' ); break;
		
		default: echo ('Status: 403');
	}
}

In meinen Tests funktioniert das Du es wohl erwartest. Weder ist der zusätzliche exit bei einer Länge von als 3 Zeichen nötig noch wird der default-Zweig ignoriert.

Offenbar liegt die Chose an anderer Stelle. Auch ein Wert wie '/etc/passwd HTTP/1.1' ändert nichts daran, dass der Code funktioniert.

Aber

exit(header('Status: 403', TRUE, 403));

ist Unsinn.

Du willst:

http_response_code( 403 );
echo( 'Status: 403' );
exit;