Moin!
Ich habe bis jetzt immer mit der trans-sid gearbeitet, will jetzt aber auf Cookies umsteigen. Dabei will ich prüfen, ob der Benutzer das Cookie angenommen hat oder nicht.
Das ist kein Umstieg.
trans-sid bedeutet, dass PHP automatisch an alle Links und in alle Formulare die Session-ID reinhängt, falls Cookies nicht möglich sind. Sobald ein Skript gestartet wird und feststellt, dass die Session-ID per Cookie übertragen wird, werden die Links nicht mehr verändert.
Wenn du trans-sid ausschaltest, deaktivierst du die Linkanreicherungsautomatik. Trotzdem werden (sofern das nicht anders konfiguriert ist) natürlich Cookies benutzt, und die Methode der Übermittlung per Link ist auch immer möglich - du mußt dich nur manuell drum kümmern.
Wenn nicht entweder Fehlermeldung zeigen oder trans_sid aktivieren oda so.
Ähm? Du verwechselst einiges, würde ich sagen.
Diese 3 Sachen gingen nicht:
if(!isset($SID))
if(!defined(SID))
if(!isset($_COOKIES['SID']))
Dito hier.
Es gibt eine _Konstante_ namens SID, die den an den Link anhängbaren String enthält, oder leer ist.
Konstanten werden einmal definiert und können mit der Funktion defined() auf Existenz getestet werden, nicht aber mit isset().
Da ich vermute, dass SID immer definiert wird, hilft dir das also nichts.
In den Cookies befindet sich ein Eintrag unter dem Schlüsselwert, den session_name() dir zurückgibt.
Für die Bildung von SID könnte man folgenden Ersatzcode annehmen, der innerhalb von session_start() zum Einsatz kommt:
if (!isset($_COOKIE[session_name()]))
{
define("SID",session_name()."=".session_id());
}
else
{
define("SID","");
}
Ich hatte diese if-Abfragen nach dem Start von session_start.
Tja, dreimal gezielt, und dreimal das Ziel verfehlt.
Und wie kann ich die Lebensdauer eines Cookies auf die Maximalzeit setzen? Ich mag dem User die Möglichkeit bieten, immer eingeloggt zu bleiben. Macht man das über diese persistenten Cookies oda anders?
Das dauerhafte Einloggen solltest du nicht per Session-Cookie regeln, sondern mit setcookie() feste Cookies setzen, die genau die Login-Daten enthalten (anstelle eines Formulars beispielsweise). Das Session-Cookie hingegen regelt die Zugehörigkeit der Session-Daten zur Session.
- Sven Rautenberg
"Beim Stuff für's Web gibts kein Material, was sonst das Zeugs ist, aus dem die Sachen sind."
(fastix®, 13. Oktober 2003, 02:26 Uhr -> </archiv/2003/10/60137/#m338340>)