Mailinglisten-Archive |
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