Warum müssen für PHP-Session Cookies aktiviert sein ?
Jens
- php
Hallo,
ich habe ein Loginsystem mit PHP-Sessions.
Wenn mein Browser Cookies deaktiviert hat, komme ich nicht auf die Seite.
Ich dachte immer das die Cookies die man abstellen kann Clientseitig sind.
Da PHP-Sessions auf dem Server gespeichert werden verstehe ich nicht warum ich ohne Cookies zu aktivieren die Seite nicht betreten kann.
Bringt irgendwer Licht ins Dunkel ?
mfg
Jens
Hi,
Wenn mein Browser Cookies deaktiviert hat, komme ich nicht auf die Seite.
Ich dachte immer das die Cookies die man abstellen kann Clientseitig sind.
Jein.
Ein Cookie wird vom Browser lokal gespeichert.
Und bei jedem http-Request auf den Server, der den Cookie geschickt hat, wird der Cookie wieder an den Server geschickt.
Da PHP-Sessions auf dem Server gespeichert werden verstehe ich nicht warum ich ohne Cookies zu aktivieren die Seite nicht betreten kann.
Bringt irgendwer Licht ins Dunkel?
Ja, der ORF - jedes Jahr gibt es eine Spendenaktion unter diesem Namen... ;-)
Normalerweise funktionieren PHP-Sessions auch ohne Cookies - dann wird die Session-Id in der URL mitgeführt...
Probleme gibt es höchstens, wenn Du zu Beginn der Session Cookies akzeptierst - dann wird die Session-Id nicht in die URL geschrieben - und dann Cookies abschaltest. Jetzt hat der Server keine Möglichkeit mehr, die Session wiederzuerkennen - in der URL steht sie nicht, und den Cookie kriegt er auch nicht mehr.
cu,
Andreas
Hallo
Normalerweise funktionieren PHP-Sessions auch ohne Cookies - dann wird die Session-Id in der URL mitgeführt...
Hm aber warum klappt das bei mir nicht.
Hier die Infos aus phpinfo():
Directive Local Value Master Value
session.auto_start Off Off
session.bug_compat_42 On On
session.bug_compat_warn On On
session.cache_expire 180 180
session.cache_limiter nocache nocache
session.cookie_domain no value no value
session.cookie_lifetime 0 0
session.cookie_path /xxx/xxx /xxx/xxx
session.cookie_secure Off Off
session.entropy_file no value no value
session.entropy_length 0 0
session.gc_dividend 100 100
session.gc_maxlifetime 1440 1440
session.gc_probability 1 1
session.name XXXXXXX XXXXXXXX
session.referer_check no value no value
session.save_handler files files
session.save_path /xxx/xxx /xxx/xxx
session.serialize_handler php php
session.use_cookies On On
session.use_only_cookies Off Off
session.use_trans_sid On On
Hallo, dann muesstest Du die session-id aber
als Variable in der URL mitfuehren:
Z.B. http://www.beispieldomain.de/index.html?sessionid=XXXX
und fuer XXXX muesste dann die ID eingesetzt werden.
Gruss Bill the shoe
Hi,
also muß ich an jeden link per Hand die Sessionid noch dranhängen dann gehts ?
mfg
Jens
Hi,
also muß ich an jeden link per Hand die Sessionid noch dranhängen dann gehts ?
mfg
Jens
Hi,
nicht ganz: Das XXXX musst Du durch den Variablennamen (z.B. $sessionid) ersetzen.
Bill the shoe
Servus,
also muß ich an jeden link per Hand die Sessionid noch dranhängen dann gehts ?
wenn Du die Möglichkeit hast, deine php.ini Datei zu konfigurieren,
dann genügt es "session.use_cookies" auf "Off" zu setzen.
Gruss
Hallo Jens,
nein, Du musst das nicht zu Fuß machen mit der Session-ID. Du hast ja Trans-SID eingeschaltet. Da würde dann beim ersten Aufruf einer Seite (Der Server merkt das daran, dass weder ein Cookie noch eine ID im Code mitkommt) automatisch die Session-ID an sämtliche Links angehängt und auch als Hidden-Variable in alle Formulare eingestanzt. PHP ist da wirklich mächtig.
Sieht natürlich nicht schön aus. Ich steh inzwischen auf dem Standpunkt, wer auf seinem Client Cookies ausschaltet, der braucht auch nicht mitzumachen. *gg*
Grüße
Chris (C)
Hallo
nein, Du musst das nicht zu Fuß machen mit der Session-ID. Du hast ja Trans-SID eingeschaltet. Da würde dann beim ersten Aufruf einer Seite (Der Server merkt das daran, dass weder ein Cookie noch eine ID im Code mitkommt) automatisch die Session-ID an sämtliche Links angehängt und auch als Hidden-Variable in alle Formulare eingestanzt. PHP ist da wirklich mächtig.
Hm also der hängt bei mir die sessionid nicht automatisch an die Links.
Zugriff auf die PHP.ini habe ich leider auch nicht.
mfg
Jens
Hallo,
auch wenn ich die ID an den Link anhänge klappt es nicht.
Ich kann die Seite einfach nicht betreten.
mfg
Jens
Tag Jens,
"die Seite betreten können" bedeutet ja, einen Request auf die Seite auslösen zu können, die Seite durch den Parser zu jagen, der stellt mittels Code fest, dass er den User wiedererkennen kann und gibt dann den rest der Seite als Response zurück an den Client - right?
Wie lautet denn Dein Erkennungscode für den User?
Lass Die mal Testhalber alle Cookies ausgeben:
echo "<pre";
print_r($_COOKIE);
echo "</pre";
Dann weißt Du mehr. Das gleiche kannst Du dann noch mit den $_POST und den $_GET machen. Irgenswo sollte Deine Cookiesequenz drisnstehen und zwar mit dem Namen der Session, wie sie in der php.ini angelegt ist. Meistens ist das "PHPSESSID". Natürlich nur, wenn Du nicht die Funktion session_name() benutzt hast, bevor Du die Session gestartet hast.
Grüße
Chris (C)
Hallo,
habe einen Fehler gefunden, scheinbar wird eine Session wenn Cookies deaktiviert sind nicht automatisch in einen Header eingefügt. Manuell, also:
header("Location:bew/main.php?PHPSESSID=$PHPSESSID");
funktioniert es dann.
Auch in iFrames wird es nicht automatisch eingefügt, und in Javascriptlinks a la <a href="javascript:twoframes('asdasd.php','asdasd.php')"> wird trotz
session.use_trans_sid on wird die ID auch nicht automatisch eingefügt.
Kann das irgendwer bestätigen oder steckt bei mir sonst noch wo der Fehlerteufel ?
mfg
Jens
Hallo
Auch in iFrames wird es nicht automatisch eingefügt, und in Javascriptlinks a la <a href="javascript:twoframes('asdasd.php','asdasd.php')"> wird trotz
session.use_trans_sid on wird die ID auch nicht automatisch eingefügt.
Zu iframes kann ich nichts sagen, bei Javascript solltest du die Session-ID
händisch einfügen.
<a href="javascript:twoframes('asdasd.php?<?php echo "SESSIONID=".session_id()."','asdasd.php')">
(so ich jetzt den richtigen Frame erwischt haben sollte;-))
Tschö, Auge
Hallo
Herrje:
<a href="javascript:twoframes('asdasd.php?<?php echo "SESSIONID=".session_id(); ?>','asdasd.php')">
Wenn schon, dann mit: ..."; ?>" hinten drannen!
Tschö, Auge