Andy: Sessionvariable per link ändern

Hallo,

folgende Problemstellung:
* In der Varibale $_SESSION["language"] ist die aktuelle verwendete Sprache meiner Site gespeichert! (Steht momentan auf "en" für englisch)
* Die Seite hat die Adresse "example.tld/seite".
* Sie existiert in deutsch, aber nicht englisch.

Nun möchte ich für alternative Sprachen einen Link zum ändern der Sprache ausgeben. Problem, wie lösen? Mein Ansatz war folgender:
* In $_SESSION["lastPage"] ist immer die letzte besuchte Seite gepeichert (Referrer-Ersatz).
* Nun generiere ich den Link "example.tld/makesetting/language/de" auf der Seite "example.tld/seite".
* Das aufgerufene Skript ändert die Sprache in $_SESSION["language"] auf "de".
* und macht einen Redirect auf die ursprüngliche Seite!

Das Problem hierbei ist, dass die Seite "example.tld/makesetting/language/de" in der History auftaucht und jederzeit wieder angesprungen werden kann!

Welche Möglichkeiten gibt es alternativ? Ich vermute mal um JavaScript komme ich leider nicht rum.
Folgende Dinge habe ich mir überlegt:
1. Ein Link, der per Post-Request auf die Seite "example.tld/seite" die neue Sprache übergeben wird.
2. "example.tld/makesetting/language/de" gibt den Header "204: No Content" zurück und durch den Link wird parallel "example.org/seite" neu geladen.

Also wie, was, wo?

Danke,
Andy

  1. Hallo Andy

    * Das aufgerufene Skript ändert die Sprache in $_SESSION["language"] auf "de".
    * und macht einen Redirect auf die ursprüngliche Seite!

    Das Problem hierbei ist, dass die Seite "example.tld/makesetting/language/de" in der History auftaucht und jederzeit wieder angesprungen werden kann!

    Wenn du den Redirect mit [link:http://www.php.net/manual/de/function.header.php@title=header]("Location:example.tld/seite/"); machst taucht example.tld/makesetting/language/de (zumindest in FF und IE) nicht in der History auf.

    Folgende Dinge habe ich mir überlegt:

    1. Ein Link, der per Post-Request auf die Seite "example.tld/seite" die neue Sprache übergeben wird.

    Einfacher wäre es mit GET, nach dem Schema <a href="www.example.tld/seite/?lang=de">Link</a>

    MfG,
     Martin

    1. Hallo!

      Wenn du den Redirect mit [link:http://www.php.net/manual/de/function.header.php@title=header]("Location:example.tld/seite/"); machst taucht example.tld/makesetting/language/de (zumindest in FF und IE) nicht in der History auf.

      Scheinbar nicht ganz verstanden! "example.tld/makesetting/language/de" macht den Header-Redirect auf "example.tld/seite", nachdem es durch einen Link (!!) aufgerufen wurde, damit überschreibe also nicht im Browser die History!

      Folgende Dinge habe ich mir überlegt:

      1. Ein Link, der per Post-Request auf die Seite "example.tld/seite" die neue Sprache übergeben wird.

      Einfacher wäre es mit GET, nach dem Schema <a href="www.example.tld/seite/?lang=de">Link</a>

      Das ist ja nicht der Sinn, natürlich könnte ich die URL entsprechend erweitern, möchte dann aber auch wieder "www.example.tld/seite/" in der Adresszeile haben, müßte also auch einen Redirect anstossen, und das Problem besteht wie gehabt! Ist ja nur eine Abwandlung des von mir geschilderten Vorgehen.

      Gruß,
      Andy

  2. Hallo,

    keine Ahnung, was da vorhin beim Probieren schief gelaufen ist, jetzt taucht "example.tld/makesetting/language/de" nicht mehr in der Historie auf! Stimmt, sollte eigentlich das richtige Verhalten sein.
    Tja, manchmal ist es halt nur seltsam!

    Also danke!

    Andy