Problem mit Sessions.
Ingo
- php
0 Thorsten Steffen0 Thomas Schmieder0 Ingo0 Ingo
Hallo,
mein Problem ist es, das wenn beim Browser Cookies deaktiviert sind auch der Login meiner Seite nicht mehr funktioniert, was er aber eigentlich sollte da die sessionids ja auf dem Server gespeichert werden falls Cookies deaktiviert sind.
In der php.ini meines servers ist auch ein gültiger save_path für sessions angegeben..ich habe allerdings keinen Zugriff auf dieses Verzeichnis.
Egal, denn auch auf meinem eigenen Rechner ist ebenfalls ein gültiger Pfad gesetzt und trotzdem läuft es nicht.
Vielleicht hat ja wer nen lösungsansatz...
Ich geb ma nen bisschen Quellcode :
<?
session_start();
.
.
.
...am anfang jeder Datei
dann registrier ich einfach das passwort und den loginnamen in der erstend php datei mit:
session_register ('name');
session_register ('passwort');
weitergereicht wird die Sessionid über nen normalen link
<a href="referenzen.php?PHPSESSID=<?=$PHPSESSID?>">
tja und eigentlich funktioniert das ja auch wenn ich cookies aktiviert habe.
Hio,
Egal, denn auch auf meinem eigenen Rechner ist ebenfalls ein gültiger Pfad gesetzt und trotzdem läuft es nicht.
tauchen deine Session-Dateien dort auf? Öffne einfach mal das Verzeichnis und prüfe das einfach mal.
das müsste
<a href="referenzen.php?PHPSESSID=<? print $session_id(); ?>"> heissen.
wobei es besser ist entweder a.) den Namen der Session zu setzen oder b.) den per .ini gesetzten Namen auslesen.
... denn dein Beispiel würde bei mir nicht laufen, bei mir heisst per php.ini die Session-ID SessID.
also z.b.
<a href="referenzen.php?<?php print session_name()."=".session_id(); ?>">.
oder wenn du den Namen setzen willst
session_name("SessID");
session_start();
wichtig dabei zuerst den Namen setzen dann starten.
gruss
Thorsten
Hi,
1. PHP fügt den Namen und die ID der Session automatisch in jede href und als hidden in jedes Formular ein, dass den Server verlässt, wenn ein Fallback (also keine Cookies) detektiert wurde.
2. Wenn Deine PHP-Version neuer 4.0.x ist, benutze nicht mehr die Funktionen session_register(), session_unregsiter(), session_decode(), session_encode() sondern schreib die zu ischernden Daten einfach in das Array $HTTP_SESSION_VARS[] bzw bei Versionen ab 4.2.x einfach in das superglobale Array $_SESSION. Diese Arrays werden nach erfolgreichem session_start() automatisch in der Session-Datei /tmp/sess_1234567890abcdef1234567890abcdef (Bsp.) gesichert.
3. Von dort werden sie auch wiederhergestellt nach dem nächsten session_start().
4. die Einstellung register_globals sollte auf off stehen in der php.ini
5. Du solltest nicht mit automatischen Sessions arbeiten, wenn der Client keine Cookies unterstützt, sondern auf "Auth401" ausweichen und die php-Funktionen register_shutdown_function(), serialize($_SESSION), unserialize($_SESSION) und eine eigene Funktion zum Wegschreiben und eine zum Wiederherstellen der Daten in einer selbst gebauten Sessiondatei erstellen.
Es gibt hier zwar Leute, die meinen, dass automatsiche Sessions auch ohne Cookies (also mit hidden-Fields und URi-Variablen) funktionieren würden...
Liebe Grüße aus http://www.braunschweig.de
Tom
Hi...
also in der ini ist PHPSESSID eingetragen das habe ich schon beachtet und so wie es in den Link eingetragen ist funktioniert es ja auch wenn cookies aktiviert sind das ist ja nicht das problem...
aber danke trotzdem...
sag ma kannst du mir hier kurz erklären warum man in jeder datei session_start ausführen muß obwohl man nicht eine neue session starten will sondern nur auf eine vorhandene zugreifen will und sich die id auch nicht ändert ???
Hm jetzt verstehe ich gar nichts mehr auf meinem localhost speichert er nun bei nich akzeptierten Cookies im richtigen Verzeichnis eine session.
Bei dem Server wo ich die Dateien hochlade nicht, obwohl ein gültiger session.save_path in der ini besteht.