Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]jezyk przez zaladowanie post do sessji
Forum PHP.pl > Forum > Przedszkole
noc_nik
Witam

Zrobiłem sobie jezyki na sessjach :

  1. <?php
  2. $var =$_POST["jezyk_strony"];
  3. if (empty($var)) {$_SESSION["jezyk_strony"]='pl';}
  4. if (isset($var)) {$_SESSION["jezyk_strony"]=$_POST["jezyk_strony"];}
  5. ?>


A działa to tak ze jeśli jezyk nie zostanie wybrany to załaduje sie automatycznie do sessji pl
  1. <?php
  2. if (empty($var)) {$_SESSION["jezyk_strony"]='pl';}
  3. ?>


Problem polega na tym ze plik jest w index.php jesli sie przejdzie np do ?go=kontakt to bedzie szukal $_POST czy zostal wypelniony jesli nie wysle mi do stesji pl zamiast utrzymac wybrany jezyk.

Ktos ma jakies propozycje?
Skie
No to może przyjmij inną koncepcję? Np.

  1. <?php
  2. if (IsSet($_POST['lang']) && $_POST['lang'] != '') {
  3.    $_SESSION['lang'] = $_POST['lang'];
  4. }
  5.  
  6. if (!$_SESSION['lang']) {
  7.   $_SESSION['lang'] = 'pl';
  8. }
  9. ?>


Zalety:
- język zmieni się tylko wtedy jeżeli dopiszesz do linka &lang=jezyk
- jeżeli żadnego języka nie ma ustawionego to daje "pl"

To powinno rozwiązać Twój problem. Ponadto radziłbym Ci zrobić tablię jakie istnieją języki dodał warunek przy zmienianiu języka, czy istnieje taki język $_POST['lang'] - jeśli tak to zmień na niego, jeśli nie to nic nie rób.
noc_nik
Znaczy sie ja mam jezyki zapisane w bazie i sie generuja same przyciski dostepnych jezykow. Wtedy POST ładuje do sesji dostępny jezyk:


  1. <?php
  2. $zapytanie= 'SELECT * FROM '.$nazwa.' where id='.NR.' and jezyk_strony="'.$_SESSION["jezyk_strony"].'"' ;
  3. ?>


  1. <?php
  2. jezyk_strony="'.$_SESSION["jezyk_strony"].'" ;
  3. ?>
Skie
Tak, ale w przeglądarce tak czy siak można wysłać tego POSTa, więc zabezpieczeń nigdy dość. A mój skrypt powinien pasować.

Widzę, że edytowałeś posta. Zrób więc tak skoro koniecznie musisz z bazy to pobierać:

  1. <?php
  2. if (IsSet($_POST['lang']) && $_POST['lang'] != '') {
  3.   $zapytanie = mysql_fetch_row(mysql_query('SELECT * FROM '.$nazwa.' where id='.$nr.' and jezyk_strony="'.$_SESSION["jezyk_strony"].'"'));
  4.   if (count($zapytanie) == 1) {
  5.      $_SESSION['lang'] = $_POST['lang'];
  6.   }
  7. }
  8.  
  9. if (!$_SESSION['lang']) {
  10.  $_SESSION['lang'] = 'pl';
  11. }
  12.  
  13. $jezyk_strony = $_SESSION['lang'];
  14. ?>


Chyba nie ma tutaj błędu z mysql_query () i mysql_fetch_row() ale nie jestem pewien, bo dawno nie korzystałem ze standardowych funkcji PHP do obsługi MySQL smile.gif
noc_nik
W sumie masz racje troche przerobie Twoje i bedzie ok smile.gif masz plusa ;p
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.