daniel: sessions funtionieren nicht (selbe datei)

Hallo Forum!

ich mache gerade meine ersten versuche mit sessions. leider ohne erfolg.
nach studieren einiger webseiten, die erklären wie's geht und stöbern im forum-archiv nun meine frage:

könnte es ein problem für die sessions sein, dass man mit jedem link die selbe seite aufruft?
ein per get mitgelieferter parameter definiert in meiner index.php seite was sie anzeigen soll dies ist (soll) überdies davon abhängig sein, welcher wert in einer session variable gespeichert ist.

ich habe folgenden code:-----------

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

-----------($lang ist (per get) verfügbar, wenn man den button für eine neue sprache klickt. damit soll genau dieser wert in der session festgehalten werden.)

aber genau das funktioniert nicht. gerade mal, wenn man den reload-button klickt. ansonsten ist nach jedem link (der normalerweise etwa so aussieht: "...href='index.php?show=contact'...") ist der wert von $language wieder auf 'german' gesetzt. - also als ob es keine session gäbe.

also ist der fehler in meinem script, oder liegt's daran, dass ich immerwieder die selbe seite lade?

PS: register_globals ist eingeschaltet; track-vars ebenso und auch sonst ist php vernünftig konfiguriert.
ich bin ratlos...

lg
daniel

  1. Moin!

    könnte es ein problem für die sessions sein, dass man mit jedem link die selbe seite aufruft?

    Eigentlich nicht.

    ein per get mitgelieferter parameter definiert in meiner index.php seite was sie anzeigen soll dies ist (soll) überdies davon abhängig sein, welcher wert in einer session variable gespeichert ist.

    Stell deinen Browser so ein, dass er beim Empfang eines Cookies meckert und es bestätigt haben will. Es empfiehlt sich, die vorhandenen Cookies bei dieser Gelegenheit zu löschen, damit der Browser wirklich meckert, wenn er ein Cookie kriegt.

    Lehne das Cookie ab.

    Der erste Seitenaufruf sollte zur Folge haben, dass alle Links mit einem weiteren Parameter ergänzt sind, der ungefähr so lautet: "PHPSESSID=32stelligeHexzahl".

    Wenn du dann einen Link klickst, sollte sich wieder die Cookiemeldung auftun.

    Akzeptiere den Cookie. Auf der dann empfangenen Seite sind immer noch die Session-IDs in allen Links drin.

    Klicke wieder einen Link. Die Cookie-Meldung sollte nicht mehr erscheinen, und in der erscheinenden Seite sollten alle Session-IDs verschwunden sein.

    Wenn das so abläuft, dann funktioniert die Session grundsätzlich, und der Fehler kann eigentlich nur in deinem Programmcode liegen.

    Die Session-IDs in den Links müssen nicht zwingend auftauchen, der Cookie aber auf jedem Fall. Wenn nicht, gehen aus irgendeinem Grund die Sessions bei dir noch nicht.

    - Sven Rautenberg

    --
    "Bei einer Geschichte gibt es immer vier Seiten: Deine Seite, ihre Seite, die Wahrheit und das, was wirklich passiert ist." (Rousseau)
    1. Moin!

      Der erste Seitenaufruf sollte zur Folge haben, dass alle Links mit einem weiteren Parameter ergänzt sind, der ungefähr so lautet: "PHPSESSID=32stelligeHexzahl".

      Dies funktioniert aber nur, wenn use_trans_sid aktiviert ist, was nun nicht mehr standartmäßig der Fall ist. Aber wenn die Get-Variable ohne $_GET[] zu bekommen ist, ist die Konfiguration aber wahrschienlich so, daß das auch der Fall ist.
      Allerdings verstehe ich deine Prozedur nicht ganz, beim ersten seitenaufruf steht die PHPSESSID immer hinter den Links (wenn s.o.), egal ob man den Cookie annimmt oder nicht. beim zweitenmal ist sie dann nicht mehr vorhanden, wenn der Cookie erfolgreich gesetzt wurde. Würde mich interessieren, warum du diesen etwas umständlichen Weg gehts.

      Ein weiterer Fehler könnte bei einem Lokal installierten Webserver sein, daß das Verzeichnis für das Speichern von sessions nicht richtig angegeben wurde - z.b. hat PHP dort keinen Schreibzugriff, oder es existiert einfach nicht. Die einstellung befindet sich meines Wissens in der php.ini und heißt session_dir oder so ähnlich. Wenn dies der Fall ist, werden die Cookies normal gesetzt, ober PHP kann die Infos, die es speichern sollte, nicht mehr abrufen.

      hoffe, das Hilft

      Heizer

  2. Hallo Daniel,

    PS: register_globals ist eingeschaltet; track-vars ebenso und auch sonst ist php vernünftig konfiguriert.
    ich bin ratlos...

    Welch Provokation: "register_globals=on" ist keinesfalls vernünftig.

    Wie bekommst Du Deinen Variablen denn rein in die Session-Daten? Machst Du das per Zuweisung auf das $_SESSION-Array? Solltest Du aber...

    Liebe Grüße aus http://www.braunschweig.de

    Tom

    --
    Intelligenz ist die Fähigkeit, aus Fehlern Anderer zu lernen und Mut die, eigene zu machen.