echo $begrüßung;
Meine .htaccess in der Document-Root ruft bei Fehler 404 nun die Datei fehler.php (ebenfalls in der Document-Root) auf, und Diese enthält folgende Zeile:
header("Location: unterverzeichnis/index.php?cont=fehler");
Das sind zwei Fehler auf einmal. Zum einen schreibt HTTP vor, dass der Location-Header eine absolute URL (http://...) liefert und keine relative. Zum anderen ist das vorgesehene Mittel bei Abruf einer nicht vorhandenen Ressource der Statuscode 404 und keine Weiterleitung (302) auf eine Ressource, die du vermutlich mit Statuscode 200 auslieferst. Suchmaschinen werden es dir danken, wenn sie die richtigen Statuscodes bekommen und müssen nicht zu obskuren Mitteln greifen, um rauszufinden, wie sich dein Server bei 404-Fehlern verhält.
Wenn du das beherzigst, hast du kein Weiterleitungsproblem mehr.
header("Location: unterverzeichnis/index.php?cont=hund");
Die Seite index.php wird gelaten, $_SESSION['cont']='hund', $_GET['cont']=NULL,
(und ich bin mir sehr sicher, daß ich die Variable $hund nirgends sonst verwendet habe ...)
Eine Variable $hund spielt hier auch keine Rolle. Du verwendest den Wert "hund".
Ergebnis: die Weiterleitung wird nicht ausgeführt (es wird immer die index.php geladen), aber die Variable cont wird ausgelesen, und zwar wird sie nicht per $GET übertragen sondern direkt in die SESSION, die zu diesem Zeitpunkt zwar vom vorherigen Aufruf noch besteht, aber noch nicht einmal gestartet ist, eingelesen.
Das passiert nicht einfach so. PHP verändert keine Session-Variablen ohne Aufforderung durch ein Script.
Ich verstehe es nicht, hat jemand von Euch eine Erklärung?
Ich kenne deine Scripte nicht und kann dir deshalb keine Erklärung geben. Wenn du trotz meiner einleitenden Worte an der Weiterleitung festhalten willst, könntest du zum Testen mal ein paar kleine Verzögerungen mit sleep() (2, 3 Sekunden werden reichen) einbauen, bevor du die Session öffnest, und nachdem du den Schreibzugriff beendet hast. Vielleicht läuft irgendetwas zu schnell ab.
Du könntest auch die Verzögerung so groß setzen, dass dir Zeit bleibt, den Inhalt der Sessiondaten-Datei zu inspizieren, so dass du möglicherweise feststellen kannst, dass der Wert bereits vor der nächsten Anforderung des Browsers (aufgrund des Location-Headers) in der Session steht.
Außerdem solltest du bei allem beachten, dass sich Besucher nicht immer an die von dir vorgesehene Reihenfolge des Seitenaufrufs halten. Ebenso sollten deine Seiten ihre Ihnalte auch ohne Session hergeben, denn Suchmaschinen verwenden im Allgemeinen keine Sessions, bzw. die dafür notwendigen Cookies.
echo "$verabschiedung $name";