Das war mal wieder so ein Fehler an dem man Tage verbringen kann... zum Glück aber nicht!
Ich arbeite derzeit mit einer Open Source Lib zur Generierung von Formularen. Darauf werde ich hier nicht weiter eingehen, da es im Grunde nebensächlich ist. Dennoch trat hier ein alter bekannter Fehler auf.
Die PHP Session Werte wurden (anscheinend) nicht über den Seitenaufruf hinweg gespeichert!
Der Code um den es geht sieht also abstrahiert so aus:
session_start();
$_SESSION['key'] = 'value';
// ... weiterer Code ...
$dummy = $_SESSION['key']; //Hier funktioniert noch alles! Der Wert ist korrekt mit 'value' belegt.
?>
Nun gab es eine weitere Seite, die auf den gesetzten Wert zurückgreifen muss. Diese besaß jedoch kein vollständiges Bootstrap, es handelte sich um eine Erzeugungsroutine für Captcha-Bilder.
An dieser Stelle wollen wir auch nicht weiter Kritik an der Sauberkeit der Lib üben, sondern sie als gegeben betrachten.
Sie enthielt also den folgenden (wieder abstrahierten) Code für den zweiten Aufruf:
// ... Code
function validate($key){
if($_SESSION['key'] == $key){
return true;
}
}
// ... noch mehr Code
?>
Großartig, der Key war nie in der PHP Session zu finden. Wundersamer weise war die Session aber sogar noch mit anderen Werten gefüllt!
Also was war los?
Des Rätsels Lösung!
Grund für die Probleme ist, dass in der Auswertung, also beim reinen lesen der PHP Session kein ausgeführt wurde.
Die Session wurde in diesem Aufruf also anscheinend nicht wieder korrekt "abgerufen".
Um das Problem zu beheben, musste nur zu Beginn erneut ein ergänzt werden und schon funktionierte alles wie erwartet.
Ich hoffe der Tipp hilft vielleicht dem ein oder anderen, dem dieses Problem auch unterläuft.