kölir: session starten und destroyen nur wenn...

Hallo,

wie kann ich es bewerkstelligen, dass eine session nur gestartet wird, wenn noch nicht geschehen
geht das?
(!session_id() ? session_start() : '');
jemand bessere möglichkeiten?
kann ich das : '' einfach weglassen bei dem ternären?

und wie kann ich es bewerkstelligen, dass eine session nur destroyed wird, wenn keine daten mehr vorhanden sind?
geht das?
(sizeof($_SESSION)=0 ? session_destroy() : '');
jemand bessere möglichkeiten?

gruß

  1. 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";