Session-ID (sid) im Frontend-Bereich ausschalten

Gesperrt
fschubo
Beiträge: 8
Registriert: Mo 16. Dez 2002, 12:33
Kontaktdaten:

Session-ID (sid) im Frontend-Bereich ausschalten

Beitrag von fschubo » Fr 20. Aug 2004, 12:08

Hallo!

Für folgendes Problem suche ich schon seit geraumer Zeit eine Lösung. Die Suche hier im Forum hat bisher leider keine Antworten ergeben. Es gab einen Thread (http://www.contenido.de/forum/viewtopic.php?t=1177) mit glaube ich genau meiner Frage, dieser wurde jedoch nicht gelöst.

Zum Problem:
Ich möchte gerne die Session-ID (sid) im Frontend-Bereich ausschalten. Dazu habe ich bereits alle Navigationsmodule modifiziert. Beim durchklicken ist die Session-ID folglich nicht mehr vorhanden. Alles funktioniert so weit. Nun ist es jedoch so, dass beim erstmaligen eingeben der URL (Bsp: http://www.wiessner.de) die Session-ID immer noch angehängt wird. Dies möchte ich gerne vermeiden.

Meine Frage:
Kann man das gefahrlos ausschalten (Statistik wird nicht benötigt da phpopentracker) und wenn ja, wie mache ich das am besten. Ich hab schon ausgiebigst im Code nach den entsprechenden Stellen gesucht, bin mit meinen (dass muss ich mir hier wohl eingestehen) mittelmäßigen Kenntnissen jedoch zu keinem Ergebnis gekommen.

Herzlichen Dank an alle, die mir einen Tipp geben,
Felix

emergence
Beiträge: 10641
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Fr 20. Aug 2004, 13:05

sag mal welche contenido version verwendest du ?
*** make your own tools (wishlist :: thx)

fschubo
Beiträge: 8
Registriert: Mo 16. Dez 2002, 12:33
Kontaktdaten:

Beitrag von fschubo » Fr 20. Aug 2004, 13:11

Ich verwende Contenido Version 4.2.

emergence
Beiträge: 10641
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Fr 20. Aug 2004, 13:17

ich kenne contenido 4.2 leider nicht... somit weiss ich nicht wie die sessid angehängt wird....

eventuell funktioniert es mit einer .htaccess datei -> inhalt

Code: Alles auswählen

php_flag session.use_trans_sid off
muss sich im selben verzeichniss wie das front end befinden...
funktioniert nur bei apache server wenn php als mod_php eingebunden ist...
im schlimmsten fall bekommst du einen internen server fehler -> dann weisst du das es nicht funktioniert...
*** make your own tools (wishlist :: thx)

fschubo
Beiträge: 8
Registriert: Mo 16. Dez 2002, 12:33
Kontaktdaten:

Beitrag von fschubo » Fr 20. Aug 2004, 14:50

Hallo,
vielen Dank für den Vorschlag.

Leider bekommen ich bei diesem Vorgehen den Internal Server Error. Laut phpinfo ist mod_php4 eingebunden.

fschubo
Beiträge: 8
Registriert: Mo 16. Dez 2002, 12:33
Kontaktdaten:

Beitrag von fschubo » Fr 20. Aug 2004, 15:01

Noch ein Nachtrag:
In der phpinfo steht außerdem unter session:

Directive|Local Value|Master Value
...
session.use_cookies|On|On
session.use_only_cookies|Off|Off
session.use_trans_sid|Off|Off

Das spricht doch dafür, dass session.use_trans_sid ausgeschaltet ist, oder?

Gruss Felix

emergence
Beiträge: 10641
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Fr 20. Aug 2004, 16:08

fschubo hat geschrieben:Das spricht doch dafür, dass session.use_trans_sid ausgeschaltet ist, oder?
ja eigentlich schon...
dann bringt die .htaccess datei in dem sinne nichts...
sorry...
*** make your own tools (wishlist :: thx)

fschubo
Beiträge: 8
Registriert: Mo 16. Dez 2002, 12:33
Kontaktdaten:

Beitrag von fschubo » Fr 20. Aug 2004, 16:40

Folgendes habe ich mittlerweile rausgefunden:

In der Datei session.inc befindet sich die function url()
Diese ist wohl dafür verantwortlich, dass die Session-ID angehängt wird.

Code: Alles auswählen

  ## url($url):
  ##
  ## Helper function: returns $url concatenated with the current
  ## session $id.

  function url($url) {
    // Remove existing session info from url
    $url = ereg_replace(
      "([&?])".quotemeta(urlencode($this->name))."=".$this->id."(&|$)",
      "\\1", $url);

    // Remove trailing ?/& if needed
    $url=ereg_replace("[&?]+$", "", $url);

    switch ($this->mode) {
      case "get":
        $url .= ( strpos($url, "?") != false ?  "&" : "?" ).
                urlencode($this->name)."=".$this->id;
      break;
      default:
        ;
      break;
    }

    // Encode naughty characters in the URL
    $url = str_replace(array("<", ">", " ", "\"", "'"), 
                       array("%3C", "%3E", "+", "%22", "%27"), $url);
    return $url;
  }
Wenn ich diese Funktion um die entsprechende Zeilen erleichtere, wird keine sid mehr angehängt. Leider trifft das auch für den Backend-Bereich zu, der dann natürlich nicht mehr funktioniert.

Was ich allerdings nicht verstehe ist, dass oben in der session.inc mode bei mir eindeutig auf cookie gesetzt wird:

Code: Alles auswählen

  var $magic = "";                    ## Some string you should change.
  var $mode = "cookie";               ## We propagate session IDs with cookies
  var $fallback_mode;                 ## If this doesn't work, fall back...
  var $lifetime = 0;                  ## 0 = do session cookies, else minutes
Und wenn ich das richtig verstehe wird die Session-ID nur dann rein geschrieben, wenn mode auf get gesetzt ist.

In so fern verstehe ich nicht, dass trotzdem die ID angehängt wird.

Ich bin dankbar für jede Anregung.

Gesperrt