Session wieder aufnehmen?

rayphi

Mitglied
Kurz und knapp fang ich gleich mal an!
Script1 session wird gestartet und die SessionID wird per cookie übermittelt...
PHP:
...
session_name('nameDerSession');
session_start();
$sid = session_id();
setcookie('nameDesCookies', $sid, time()+3600, $path='', $domain='', $secure=false, $httponly=true);
$_SESSION['Name'] = $Name;
$_SESSION['Anrede'] = $Anrede;
...
script 2 Cookie wird ausgelesen somit haben wir wieder die SessionID aber wie lade ich nun die Session mit dieser SessionID?
und eine noch viel wichtigere Frage warum gibt mir die Session den wert aus ohne das ich mit der SessionID die Session gestartet habe?

PHP:
...
$sid = $_COOKIE['nameDesCookies'];
session_name('nameDerSession');
session_start();
$name = $_SESSION['Name'];
$anrede = $_SESSION['Anrede'];
...
mfg rayphi
 
PHP:
...
$sid = $_COOKIE['nameDesCookies'];
session_name('nameDerSession');
session_start();
if(session_id() == $sid) {
   $name = $_SESSION['Name'];
   $anrede = $_SESSION['Anrede'];
} else {
      echo 'Session futsch!';
   }
...

^ ^darf ich das so verstehen oder ist das quatsch?
 
Ich würde eine Session nicht dafür hernehmen, Account-Daten zu speichern. Vor allem nicht, wenn man ein Feature des sog. Wiedererkennens einbauen will. Persistiere die Session wenigstens in eine Datenbank und lade sie bei jedem Besuch neu. Das ist viel zuverlässiger. Dann kannst du eine eigene Session-ID (was noch viel besser ist, da PHP-Sessions nicht gerade das sicherste der Welt sind) bauen und diese als Primary Key zusammen mit den serialize()'ed Daten in der Session-Tabelle deiner DB ablegen.
 
Ich habe hier ein Formular was über 4 Seiten gehen soll!
Auf der ersten Seite werden die persönlichen Daten angegeben auf der 2ten Seite wird dann "Sehr geehte/r Anrede Name" dazu aufgefordert die weiteren Daten wie beschrieben und möglichst vollständig einzutragen... außerdem sollte noch die BenutzerID mitgeliefert werden (in der Session) damit ich den Datensatz des Benutzers der gerade seine Daten angibt updaten kann... und in dem fall ist das doch richtig so wie ich das mache oder gibt es da bessere Lösungen?
 
Zuletzt bearbeitet:
....oder gibt es da bessere Lösungen?

Nun ja, das ist alles zum Teil die Neuerfindung des Rades :eek:

session_start() startet eine Session, es sucht sie sich selbst.
Soll heissen: ob auf irgendeinem Wege...(GET,POST oder Cookie) eine Session-ID geliefert wurde.
Ist dies der Fall, wird die vorhandene Session wieder aufgenommen, andernfalls eine neue gestartet.

Wenn du eine Session nur über Cookies aufrechterhalten willst, dann verwende ini_set() und setze die Option session.use_only_cookies auf 1.

Um den Cookie selbst musst du dich wie gesagt nicht kümmern, session_start() findet von alleine, was es braucht :)
 
Zurück