dedlfix: session fkt. nicht

Beitrag lesen

echo $begrüßung;

$akt_version = "4.3.11";

@session_start();

Wenn man Fehlermeldungen unterdrückt und auch noch den Rückgabewert von Funktionen ignoriert, sollte man sich nicht wundern, wenn angeblich kein Fehler auftrat und das Script trotzdem nicht funktioniert.
Entferne zur Fehlersuche den Fehlerkontrolloperator @. In das fertige Script kannst du ihn wieder aufnehmen, wenn du den Besuchern die PHP-Meldung ersparen möchtest, die im Falle eines Fehlers ausgegeben wird. Allerdings solltest du dann den Rückgabewert von session_start() auswerten und angemessen darauf reagieren.

Wie an anderer Stelle bereits gesagt wurde, darf vor dem Starten der Session keinerlei Ausgabe erfolgt sein. Dass session_start() unbedingt in die erste Programmzeile gehöre, ist dagegen nicht richtig.

if($_SESSION['version'] == $akt_version)

Beim ersten Starten der Session ist $_SESSION['version'] noch nicht vorhanden. Ein Lesezugriff auf etwas nicht vorhandenes ist ein Programmierfehler. PHP ist hier tolerant und gibt das nur mit einer Notiz zu bedenken, die angezeigt wird, wenn man das error_reporting auf E_ALL stellt. Diese Notizen sind wertvolle Hinweise beim Entwickeln und der Fehlersuche.

$_SESSION['version'] = "".$akt_version."";

In $akt_version ist ein String enthalten. Davor und danach Leerstrings zu hängen ist genauso sinnlos, wie zu einer Zahl  0 zu addieren. Möchte man eine Typumwandlung haben (was hier aber nicht erforderlich ist) sollte man das auch so notieren, um dies für andere Quelltextleser zu verdeutlichen.

wenn ich die aufrufe, bekomme ich das, wie es auch sein muß ALERT.
wenn ich die seite aber noch mal aufrufe, kommt die meldung noch mal, was ja eigentlich nicht sein sollte.
wo ist evtl. mein fehler?

Neben dem oben erwähnten Grund der zu einer von dir unterdrückten Fehlermeldung führen kann, kann es auch noch sein, dass aus anderen Gründen kein Cookie mit der Session-ID gesetzt werden konnte und die Ausweichvariante (Anhängen der Session-ID als Parameter an URLs) nicht funktioniert hat.

echo "$verabschiedung $name";