dedlfix: session starten und destroyen nur wenn...

Beitrag lesen

echo $begrüßung;

wie kann ich es bewerkstelligen, dass eine session nur gestartet wird, wenn noch nicht geschehen

Hier unterliegst du anscheinend einem Irrtum. session_start() ist in jedem Script nötig, das auf Session-Daten zugreifen möchte. Es eröffnet nicht nur komplett neue Sessions sondern öffnet auch bereits in vorhergehenden Scriptaufrufen erstellte Sessions.

(!session_id() ? session_start() : '');
jemand bessere möglichkeiten?
kann ich das : '' einfach weglassen bei dem ternären?

Nein. Der ternäre Operator ist auch nicht für solche Spielchen gedacht. if (bedingung) auszuführendes() ist nicht länger als der ternäre Operator mit überflüssigem else-Zweig.

und wie kann ich es bewerkstelligen, dass eine session nur destroyed wird, wenn keine daten mehr vorhanden sind?

session_destroy() macht etwas anderes als du dir möglicherweise vorstellst. Lies dazu bitte noch einmal die Handbuchseite und die dort anhängenden Nutzerkommentare.

jemand bessere möglichkeiten?

Um alle Session-Daten zu löschen kann man $_SESSION ein leeres Array zuweisen. Das Zerstören des Session-Cookies ist nicht zwingend erforderlich. Wenn die Session-Daten leer sind ist man abgemeldet. Wenn das Cookie noch die alte Session-ID enthält ist das nicht weiter tragisch.

echo "$verabschiedung $name";