ChrisB: Mehrere Sessions auf einer Domain

Beitrag lesen

Hi,

Anschließend soll die index.php aufgerufen werden:

$sessname = session_name(); // Session-Namen aufrufen

if ($sessname) // Wenn Session vorhanden
        {
        session_name($sessname); // Session-Namen aktualisieren
        // Eine Session ist vorhanden
        session_start(); // Session starten
        }


>   
> Das funktioniert aber nicht.  
  
Kann es ja auch nicht - du kannst nicht erwarten, den Namen einer Session zu erhalten, wenn es noch gar keine Session gibt (also session\_start noch nicht aufgerufen wurde).  
  

> Noch einmal zum Ablauf: In der login.php lege ich eine benannte Session an. Als Session-Namen verwende ich die md5 der E-Mail-Adresse.  
  
Und vorher soll ein Folgescript davon etwas wissen?  
  
Du scheinst das grundlegende Funktionsprinzip von Sessions noch nicht verstanden zu haben.  
Um einen Client wiedererkennen zu können, wird diesem ein Zufallswert zugeordnet - das ist die Session-ID. Diese muss er bei Folgerequests wieder mit übergeben, und das macht er unter einem Parameternamen, der per Default PHPSESSID ist, den man aber auch anders wählen kann.  
Wenn du diese Änderung aber \*in\* einer Scriptinstanz vornimmst, und dort den Parameternamen auf HUGO änderst - woher soll das „nächste“ Script denn wissen, dass ausgerechnet der Parameter, der ihm unter dem Namen HUGO übermittelt wird, die Session-ID enthalten soll ...? Das kann es nicht raten.  
Wenn mehrere Scripte sich darüber einig sein sollen, dass die Session-ID unter dem Parameternamen HUGO übergeben werden soll - dann musst du diese Info entweder \*in\* jedem Script diesem bekannt machen, in dem du dort session\_name('HUGO') aufrufst, oder diese Bekanntmachung außerhalb der einzelnen Scripte in der PHP-Konfiguration machen (ggf. bspw. verzeichnis-basiert per .htaccess).  
  

> Als Session-Namen verwende ich die md5 der E-Mail-Adresse.  
  
Warum willst du den Session-\*Namen\* denn überhaupt abhängig von einer Information des konkreten Benutzers wählen?  
Der Session-Mechanismus verwendet per Default auch einen \*festen\* Namen, PHPSESSID - was erhoffst du dir davon, von diesem Weg abzuweichen?  
  
Nutze für deine Zweit-Session den Namen HUGO (oder einen anderen, der dir günstiger erscheint, aber einen \*festen\*) - und gut is'.  
Den kannst du in jedem Script, dass diese Zweit-Session nutzen soll, über session\_name('HUGO') bekannt machen, und schon läuft das ganze. (Konfiguration der Speicherverzeichnisse nicht vergessen, sonst sind Probleme vorprogrammiert.)  
  

> Außerdem ist es doch nicht performant, wenn bei jedem Aufruf mit session\_start() eine Session angelegt wird. Ich brauche die Session ja nur, wenn jemand eingeloggt ist.  
  
Und um festzustellen, dass jemand eingeloggt ist, brauchst du die Session.  
Diese Katze beißt sich selbst in den Schwanz.  
  
MfG ChrisB  
  

-- 
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?