PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : session bei deaktivierten cookies


Gweilo
05.10.2003, 14:24:36
Wie erkenne ich, dass ein user keine Cookies unterstützt?

Was mir dazu einfällt:
- cookie setzen (falls nicht vorhanden)
- falls der referrer auf der eigenen seite war und kein cookie vorhanden war unterstützt er keine cookies und man muss SESSID per URL weitergeben.

Der Nachteil? Man erkennt erst auf der 2. seite, ob der user cookies aktiviert hat oder nicht. + Referrer klappt nicht immer 100%-ig, je nach browser.

Kennt jemand eine bessere Lösung zum Problem?

Ben20
05.10.2003, 15:09:25
Beim Sessionmanagement brauchst Du nicht darum kümmern, ob Cookies vom User erlaubt werden oder nicht, das macht PHP selbstständig. Wenn die Cookies deaktivert sind, wird die SESSID automatisch per URL weitergeben!

Gweilo
05.10.2003, 17:11:57
das ist nur bei neueren versionen von PHP so! aber der Server auf dem die Seite läuft hat noch eine alte Version (4.2.2 glaub ich).

Ben20
05.10.2003, 17:37:06
Das sollte auch bei älteren Versionen gehen (ich hab das schon mit 4.1.x versucht und es ging!)

Gweilo
05.10.2003, 17:52:48
oh, sorry, mein fehler. hatte da einen anderen fehler, deshalb ging es nicht!

Gweilo
05.10.2003, 18:45:25
Habe es nun nochmals getestet. Auf einem Server funktionniert es (der lokale), und auf dem anderen nicht.

Hier ein Test-Code (session2.php)

<?PHP

session_start();
if (!isset($_SESSION['userid']))
{
srand((double)microtime()*1000000);
$userid = rand();
$_SESSION['userid']=$userid;
}
else
$userid=$_SESSION['userid'];
?>
<html>
<head>
</head>
<body>
USERID = <?=$userid?><br />
<a href="session1.php">SESSION 1</a>
</body>
</html>


Session1.php leitet wieder auf session2.php zurück, um zu testen, ob die werte korrekt übernommen werden.

Gibt es vielleicht eine Variable in php.ini, die das einstellt?

Ben20
05.10.2003, 18:51:15
Funktionierts wenn die Cookies aktiviert sind? Ist das Sessionmanagement auf dem Testsystem aktiviert (SessionOrdner ist schreibbar)?

Gweilo
05.10.2003, 20:16:18
ja, cookies+sessions funktionnieren einwandfrei, falls cookies aktiviert sind. Das problem ist, dass die SID nicht an der URL angefügt wird (bei browsern, die sessions abgeschalten haben).

Schreibrecht fällt als Fehlerquelle aus, da es auf meinem lokalen WIN-PC läuft.

Ben20
05.10.2003, 20:42:27
Seltsam seltsam!

Leider kann ich Dir da jetzt auch nicht weiterhelfen. Einzige Idee wäre noch per ini_set('session.use_cookies', '0'); die Verwendung von Cookies von vorneherein abzuschalten, vielleicht gehts dann!

Gweilo
05.10.2003, 21:53:17
geht auch nicht. mit cookies ausgeschaltet geht es weder wenn sie aktiviert sind oder nicht.

Ich benutze:
PHP Version 4.3.3
Win XP

Ich schau mal ob ich was in der PHP.ini finde. Wär aber komisch, denn ich hatte die neue version von PHP erst grad heute frisch installiert. Habe es vorher nie ausprobiert, deshalb weiss ich nicht, ob es vorher nicht geklappt hätte.

Gweilo
06.10.2003, 09:50:46
Ich habe in php.ini folgendes umgestellt und nun funktioniert es:
session.use_trans_sid = 1

Komisch finde ich aber, dass der default wert dafür 0 ist.