Fehler kommt nicht

Hi Leute,
ich wollte eine Website erstellen, die nach einem Stichwort des Benutzers entweder zu einer bestimmten Seite weiterleitet oder einen Fehler meldet, dass es zu diesem Stichwort keine passende Website gibt. Das mit der Weiterleitung funktioniert, aber die Fehlermeldung kommt nicht. Im Moment sieht das so aus:


<!DOCTYPE HTML>
<html>
<head>
<title>Willkommen!</title>
</head>
<body><center>
<div id="form">
<form action="welcome.php" method="post" accept-charset="UTF-8">
<input type="text" size="25" maxlength="25" name="selection"/>
<input type="submit" value="Weiter"/>
</form></div>
<div id="error">
<?php
	echo handle();
?>
</div></center></body></html>
<?php
	function handle(){
	
		$var = determine();
		global $path;
		if ($path){
			header("Location: $var");
			exit();
		}
		else if ($path == Null){
			echo "";
		}
		else{
			echo $var;
		}
	};
 
	function determine(){
		
		global $path;
		if (isset($_POST["selection"])){
			switch($_POST["selection"]){
				case "Eingabe1":
					$path = True;
					return" Weiterleitung1";
					break;
				case "Eingabe2":
					$path = True;
					return "Weiterleitung2";
					break;
				case "Eingabe3":
					$path = True;
					return "Weiterleitung3";
					break;
				case "Eingabe4":
					$path = True;
					return "Weiterleitung4";
					break;
				/* ... */
				default:
					$path = False;
					return $_POST["selection"];
			}
		}
		else {
			$path = Null;
			return "...";
		};
	};
?>

Vielleicht ist das auch nicht der beste Code, aber er muss ja nur funktionieren.

Warum erzeugst du für deine Fehlermeldung nicht eine eigene Webseite und leitest zu dieser im Fehlerfall weiter?
Ein Webserver würde nichts anderes machen.

Wie sollte ich dann genau angeben, welcher Fehler aufgetreten ist und wie dessen Beschreibug lautet? Z.B.: Fehler: Falsche Eingabe (“abc”)
Ich habe das schon einmal hinbekommen, dass alles funktioniert hat, aber dazu musste ich das GET-Request benutzen und dann stand in der URl sowas wie “abc.php?error=xyz&type=input”. Das ist nicht so schick. Und mit POST funktioniert es nicht. Keine Ahnung, warum nicht…

in der Funktion hast du echo-Befehle, werden die ausgegeben?
teste das in einer noch einfacheren Dummy-Methode mit nur einer Zeile

die Alternative dürfte Rückgabewert sein, du hast ja auch echo vor dem Methodenaufruf stehen,
ganz wie dieses Beispiel (erstes auf der Seite) hier?:
PHP: R
bisher hast du aber kein return in der Methode, in determine() ja, in handle() nein

Fehlermeldungen an eine Fehlerseite sollte freilich auch technisch möglich sein,
aber noch wichtiger ist natürlich erstmal, dass nur eine Seite ordentlich funktioniert

header Änderungen funktionieren nur, wenn vorher noch keine Ausgabe generiert wurde. Das ist bei durch das HTML aber der Fall.