Mit den jeweiligen Ausgaben wäre das leichter, so müsste man ja erst den ganzen Code durschau'n.

Was mir aber auffällt, ist, dass da Code dupliziert ist, der doch an sich das gleiche machen soll, also einmal die Map Generierung im Abschnitt:
if($action=="main") {
ebenso wie in
if($action=="goto") {

Vermutlich läuft in dem goto Abschnitt irgendwas etwas anders, daher dann beim "laufen" der Fehler.

Da wär's praktisch, den gemeinsamen Code in eine Funktion zu packen.