Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z sesja
Forum PHP.pl > Forum > PHP
podziak
Witam mam kolejny problem.
Postanowilem jezyk oprzec o sesje

  1. <?php
  2. if (!isset($_SESSION['lang'])) { // jeśli zmienna nie jest zarejestrowana
  3. $_SESSION['lang'] == "pl"; // przypisz jej początkową wartość
  4. } else { // jeśli jest zarejestrowana
  5. $_SESSION['lang'] == "en"; // zwiększ jej wartość
  6. }
  7. ?>


no ale to chyba nie jest dobre rozwiazanie bo jak chce zmienic jezyk to nadal mi zostaje w zmiennej sesyjnej stary jezyk.

Jak zapisac ze przy zmianie jezyka zapisuje mi nowa wartosc do zmiennej sesyjnej lang??

Bo chce zrobic skrypt wielojezykowy i caly czs mi sie sypie

dzieki wielkie
Cysiaczek
Używasz operatora '==' co oznacza porównanie - aby przypisac musisz użyc operatora '='. Proponuję manual na początek, bo twój błąd jest błędęm takim samym, jak każdy błąd ortograficzny języka polskiego.
dopy
IMO Twoje rozwiązanie jest troche bez sensu smile.gif Raz, tak jak napisał @Cysiaczek - błędem jest używanie == , a dwa to czy aby napewno taki sposób ma sens ? Ten kod sprawdzi czy jest coś przypisane do sesji, jak nie to ustawi na polski, jak tak to ustawi na angielski... a co jesli sesja bedzie ustawiona, ale na jezyk polski ? Wtedy system zmieni na angielski smile.gif Wiec moim zdaniem wystarczy sprawdzac czy sesja jest ustawiona, jak nie to nadawać jej wartość PL. Pozdrawiam smile.gif
Cysiaczek
  1. <?php
  2. $_SESSION['lang'] = "pl"; // przypisz jej początkową wartość
  3.  
  4.  // tu raczej nie sesja, a POST lub GET powinno być, bo nie ma sensu zmiany zmiany języka języka pakowac do sesji
  5. if (isset($_GET['changeMyLanguage'])) {
  6.  
  7. switch ($_SESSION['lang']) {
  8. case 'pl': $_SESSION['lang']='en';break;
  9. case 'en': $_SESSION['lang']='pl';break;
  10. }
  11. }
  12. ?>


Tak troszkę łopatologicznie, ale chociaż działa :|
dopy
Hmm ale Twój kod ograniczy się do zmiany między dwoma językami, wykluczając obsługę większej ilości (tak mi się zdaje). Poza tym nie powinno być przypadkiem:

  1. <?php
  2. if(empty($_SESSION['lang'])) $_SESSION['lang'] = "pl"; // przypisz jej wartosc jak nie ma zadnej
  3. ?>


Ja bym przerobił Twój kod następująco:
  1. <?php
  2. if(empty($_SESSION['lang'])) $_SESSION['lang'] = "pl"; 
  3.  
  4. if (isset($_GET['NewLanguage'])) {
  5. switch ($_GET['NewLanguage']) {
  6. case 'pl': $_SESSION['lang']='pl';break;
  7. case 'en': $_SESSION['lang']='en';break;
  8. case 'de': $_SESSION['lang']='de';break;
  9. //itd...
  10. }
  11. }
  12. ?>


Nie testowałem, ale chyba działa smile.gif
Cysiaczek
Tak. Pamietaj, że nie podaję Ci gotowego kodu, a jedynie ograniczam się do przykładu. Całą otoczkę to juz sobie musisz sam wykombinować.
dopy
A no i @podziak pamietaj zeby nie dawac userom nigdy wolnej reki typu:
  1. <?php
  2. if (isset($_GET['NewLanguage'])) {
  3. $_SESSION['lang']=$_GET['NewLanguage'];
  4. }
  5. ?>

Bo "dowcipnych" nie brakuje smile.gif (pewnie o tym wiesz ale zawsze lepiej napisać smile.gif )
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.