michi: PHP_session - was mache ich falsch?

hallo!

was ich erreichen möchte ist nichts anderes, als dass sich der server in einer session-variable den Wert der variable $language merkt. und wenn es noch keine solche gibt, soll sie mit dem wert 'german' erstellt werden.

dazu ertelle ich eine neue session mit: "session_start();"

und frage ab ob es schon eine Variable $language gibt: "if(!SESSION_IS_REGISTERED(language)){session_register("language"); $language = "german";}"

und zuletzt soll sich die variable ändern, wenn einer der "sprache-wechseln"-Buttons gedrückt wird (diese übergeben in der varible $lang die neue sprache):"if($lang){ $language = $lang;}"

also:
<?
session_start();
if(!SESSION_IS_REGISTERED(language)){session_register("language"); $language = "german";}
if($lang){ $language = $lang;}

...
?>

aber trotzden wird immer wieder die variable auf "german" gestellt, wenn ich die seite über einen link neu lade. (lädt man die seite jedoch über den browser-button 'refresh' neu, behält er z.B. 'english' als wer für die session-variable. sonst nicht)

was mache ich also falsch??!
lg
michi

  1. Holladiewaldfee,

    Vielleicht solltest Du lieber mit $_SESSION arbeiten ...

    Also:
    session_start();
    if(isset($_SESSION["language"]))
    { #blafoo
    }

    usw.
    Dann kannst Du Dir auch den Käse mit session_register sparen, da alles was in $_SESSION ist so oder so als Teil der Session betrachtet und gespeichert wird.

    Ciao,

    Harry

    --
      (There are only 10 types of people in this world: Those who understand binary and those who don't)
    1. hallo nochmal!

      Vielleicht solltest Du lieber mit $_SESSION arbeiten ...

      hab ich mir zu herzen genommen und diesen käse produziert:

      session_start();
      if(!isset($_SESSION["language"])){$_SESSION["language"] = "german";}
      if($lang){ $_SESSION["language"] = $lang;}

      nur leider funktioniert das genauso (wenig) wie die letzte variante :(

      und ich habe nicht die geringste ahnung warum nicht.

      lg
      michi

  2. was ich erreichen möchte ist nichts anderes, als dass sich der server in einer session-variable den Wert der variable $language merkt. und wenn es noch keine solche gibt, soll sie mit dem wert 'german' erstellt werden.

    Tipp: Frage ab, was der Browser in $_SERVER["HTTP_ACCEPT_LANUAGE"] gesendet hat. Dort erfährst Du die Präferenzen des Benutzers.

    dazu ertelle ich eine neue session mit: "session_start();"

    und frage ab ob es schon eine Variable $language gibt: "if(!SESSION_IS_REGISTERED(language)){session_register("language"); $language = "german";}"

    Wenn Du session_start() benutzt, kannst Du auch ganz einfach auf $_SESSION["language"] zugreifen. Davon abgesehen beißen sich die register-Funktionen anscheinend mit session_start(), also entweder session_start() und $_SESSION -oder- die session_register()-Familie, aber nicht beides zusammen.

    Gruß,
      soenk.e