phpbar.de logo

Mailinglisten-Archive

[php] =?ISO-8859-1?B?UmU6IFtwaHBdIFJlOiBbcGhwXSBJbmhhbHQgU2Vzc2lvbiBWYXJpYWJs?= =?ISO-8859-1?B?ZSDkbmRlcm4=?=

[php] Re: [php] Re: [php] Inhalt Session Variabl e ändern

Lars Volkhardt php_(at)_phpcenter.de
Sat, 27 Oct 2001 02:24:36 +0200


Hallo Hans,

Du schriebst am Samstag, 27. Oktober 2001, 01:18
HM> Ich habe es nun so gelöst:

HM>   if($choice == de) $language = 'german';
HM>   if($choice == en) $language = 'english';
HM>   if(!$language)    $language = 'german';
HM>   session_register("language");

Genau das ist die richtige Vorgehensweise.

Nochmal zum Reflektieren: natürlich kannst Du, wie schon geschrieben,
jederzeit die Session-Variablen neu setzen (oder erhöhen etc.. - ist
alles das gleiche), aber Dein Fehler bei Deiner alten Vorgehensweise:

die Session-Variable überschrieb die Variable, die vom Browser
gesendet wurde, BEVOR du sie überhaupt abfragen konntest.

D.h.: wurde die Variable "language" als Session-Variable deklariert mit
dem Wert "german", und ein Nutzer ruft die Seite mit
?language=english auf, dann hat natürlich die Variable $language ganz
zu Anfang des Scripts den Wert "english".
ABER: dadurch daß Du die Session wieder aufnimmst (egal ob nun mit
session.autostart oder mit session_start()) - und alle Variablen zu
der Session bei diesem Vorgang wieder ausgelesen und auf den letzten
(alten) Stand gebracht werden, wird $language dabei natürlich
überschrieben mit dem Inhalt "german".

Beste Lösung IMO: für Session-Variablen eindeutige Namen verwenden,
z.b. sess_language.
Dann kannst du einfach abfragen im Script:

if ($language != $sess_language)
{
   $sess_language = $language;
   session_register("sess_language");
}

Tschüß,
Lars

-- 
Lars Volkhardt
APP - Another PHP Programs
http://www.php-zentrale.de
mailto:snoopy_(at)_php-zentrale.de



php::bar PHP Wiki   -   Listenarchive