Moin Moin,
ich programmiere aktuell mal wieder an meinem eigenen Weblog rum. Dazu verwende ich Sessions, in denen ich einige Einstellungen die der User in meinem Blog macht speichere. Diese Einstellungen werden dann beim Besuchen der Seite wiederhergestellt.Die Session ID wird in einem Cookie gespeichert.
Außerdem verwende ich mod_rewrite um schönere URLs zu bekommen. Die URL für das Archiv für April 2006 sieht z.B. so aus: http://www.domain.tld/archiv/2006/04//
Das Problem ist folgendes: Ich möchte auch berücksichtigen, dass ein Benutzer die Website in vollem Umfang nutzen kann, auch wenn er Cookies deaktiviert hat. Dazu führe ich dann (und nur dann) die Session ID in der URL mit. Um beim obrigen Beispiel zu bleiben, sähe die URL dann so aus: http://www.domain.tld/archiv/2006/04/eb8e7a0d74b601c4e0a23b8774b2cca5/
Problematisch ist das insofern, weil ich bisher noch keine 100%ig Lösung habe, wie ich das anstelle, dass die SID nur mit in der URL steht, wenn Cookies auch wirklich deaktiviert sind. Ich habe das momentan so gelöst:
PHP:
if(strlen($_COOKIE["PHPSESSID"])===32)
{
$sid=$_COOKIE["PHPSESSID"];
}
elseif(strlen($_GET["PHPSESSID"])===32)
{
$sid=$_GET["PHPSESSID"];
}
if($sid)
{
session_id($sid);
}
session_start();
Das funktioniert soweit perfekt. Ich habe eine extra Funktion mit der ich Links erstelle. Diese Funktion überprüft auch, ob es die SID in die URL mit aufnehmen muss oder nicht.
Der einzige Fall wo es nicht funktioniert ist beim ersten Besuch der Seite mit aktivierten Cookies. Da bekomme ich immer URLs mit SID, obwohl ja eigentlich URLs ohne erzeugt werden sollten. Das ist klar, weil beim ersten Aufruf der Website das Cookie erst gesetzt wird und ich von daher noch nicht auslesen kann, ob das Cookie auch vom User akzeptiert wurde.
Hat hier jemand eine Idee wie ich das umgehen kann? Ich möchte einfach, dass jemand der Cookies akzeptiert von vornherein die richtigen URLs ohne SID bekommt.
Danke
Ciao
Phil