session_start nur dann, wenn eine Session besteht...

Daxi

Erfahrenes Mitglied
Hallo!

Ich liege doch richtig, dass mit session_start eine Session-Datei angelegt wird und ich dann erst auf die Session zugreifen kann.

Ich habe einen inoffiziellen Teil meiner Homepage und einen offiziellen.
Das Login möchte ich jetzt über Sessions machen.
Wie muss ich vorgehen, wenn ich keine Session erstellen will, wenn noch keine besteht.
Ich möchte eine Session nur dann starten, wenn dies in der login.php passiert.

Ich bräuchte also irgendeine Prüf-Variable, die mir sagt, ob eine Session besteht.

Gibt es da nur den Weg über die SID in den URL-Paramentern bzw. Cookies.
steht session_name immer bereit, wenn auch keine Session gestartet ist, sodass ich überprüfen kann, ob eine Session besteht?
 
so lange ich kein session_start benutze, so lange wird auch kein Sessionfile erzeugt auf meinem Server.

Wenn noch keine besteht, dann schreibst du:
@session_start();

Wenn eine besteht und du willst auf die Variablen der Session zugreifen, schreibst du zuerst:
@session_start();

du merkst, dass die Geschichte mit der Session ansich gar nicht so kompliziert ist ;)

es wird pro browser nur eine session gestartet, egal wie oft du session_start aufrufst.
Einzige ausnehme ist, wenn du Frames benutzt. Wobei in zwei Frames schon beim start jeweils session_start aufgerufen wird. dann bekommst du 2 Session, wobei die 2. die entgültige ist ;-) (hat mich mal eine Nacht gekostet um es zu "lernen" bzw. zu erfahren)
 
Das ist mir klar mit dem Aufruf session_start.

Ich will nur, dass nur dann eine Session gestartet wird, wenn ein User angemeldet ist.
Wenn nicht, soll ggf. eine bestehende gelöscht werden.

Ich will also in jeder Datei überprüfen, ob eine Session besteht.
Wie mache ich das?
Nu wenn die Session besteht, soll darauf zugegriffen werden.

Erstellen tue ich die Session nur in login.php
ind allen anderen will ich sie nur dann mit session_start aufrufen, wenn sie bereits besteht.

Wie mach ich das?
 
wo ist das Problem?

login abfrage == "true";
$variable setzen
if/else abfrage

fertig.

ist seh da kein problem.

;)
 
Ihr versteht mich anscheinend nicht.
Ich würde gerne mit Sessions arbeiten.
Zum Verwenden muss ich doch session_start(); verwenden.
Danach ist die Session erst ansprechbar.
Ich suche nach eine Möglichkeit herauszufinden, ob für den Anwender bereits eine Session besteht.
Wenn ja, dann soll die Session verwendet werden.
Wenn nein, soll session_start erst garnicht aufgerufen werden, da ich die Session für nichts nicht eröffnen möchte.

Die Session würde nur das Login-Script erstellen.

Habe jetzt eine Idee, die ich noch probieren werde.

Beispiel:
PHP:
<?php
if($_GET[session_name] != "" || $_COOKIE[session_name] != "")
{
 $loggedin = true;
 session_start();
}
# weiterer Code...
?>
<p>Hallo <?php
if($loggedin)
 echo $_SESSION["username"]
else
 echo "Gast";
?>!</p>

Hab keinen Plan, ob sowas funktioniert.
Vielleicht wird euch jetzt klar, was ich will. :( :( :(
 
Hallo!
Ähm, ich habe das selbe Problem. Ich glaube ich habe eine Möglichkeit gefunden.
Und zwar.
Beim Login:
PHP:
session_start();
$_SESSION['login']=1;

so, dann in der Index ganz oben das:
PHP:
session_start();
if($_SESSION['login']!=1)
  session_destroy();

So, wenn man nun auf die Page kommt, startet er die (vorhandene, oder auch nicht) Session. So, dann prüft er, ob der User schon eingeloggt ist, wenn nicht, löscht er die Session wieder.
Bin mir zwar nicht sicher, ob das eine "saubere" Methode ist oder nicht....

MfG

Jacky
 
Zurück