Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] sesje...
Forum PHP.pl > Forum > Przedszkole
wojtekwro
Witam,

tworzes obie mały skrypcik obsługujący języki na stronie. Zasada jest prosta z 1 strony wybieramy interesujący nas język i jestesmy przenoszenei na stronę główna, w już wybranym języku. Ma to działać tak, że z bazy:

  1. `main` (`id`, `pozycja`, `tekst`, `lang`) VALUES
  2. (1, 'top', 'witaj na stronie.', 'pl'),
  3. (2, 'top', 'Wellcome english', 'uk'),
  4. (3, 'top', 'co? po niemiecku', 'de'),
  5. (4, 'top', 'co? po hiszpa?sku', 'sp');

która wygląda tak jak pokzałem wyżej. Jest uruchamiane zapytanie wyglądające tak:
  1. <?php
  2. $query = "SELECT tekst FROM main WHERE pozycja ='top'AND lang='$lang'";
  3. $wynik = mysql_query($query);
  4. while ($ROW = mysql_fetch_object($wynik))
  5. {
  6. print "$ROW->tekst ";
  7. ?>


Działa to fajnie jak na moje potrzeby ;] problem pojawia się kiedy umieszczę linka do jakiejś podstrony i tam chcę wczytać również jakiś język. Nie jest przekazywana zmienna $_SESSION['lang'] poniże zamieszczę skrypty. Proszę o wskazanie błędu/ów i powiedzcie czy taki sposób jest dobry aby na stronei www mieć kilka języków.

index.php w tym pliku wybieramy język jaki ma być wyświetlany na stronie, a także przekazujemy sobie zmienną $lang.
  1. <?
  2. ?>
  3. <html>
  4. <head>
  5. <meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
  6.  
  7. </head>
  8. <body>
  9. <a href="lang.php?lang=uk"><img src="images/uk.jpeg" width="70px" height="50px" alt="angielski" border="0"/></a>
  10. <a href="lang.php?lang=de"><img src="images/de.jpeg" width="70px" height="50px" alt="niemiecki" border="0"/></a>
  11. <a href="lang.php?lang=pl"><img src="images/pl.jpeg" width="70px" height="50px" alt="polski" border="0"/></a>
  12. <a href="lang.php?lang=sp"><img src="images/sp.jpeg" width="70px" height="50px" alt="hiszpański" border="0"/></a>
  13. <?php
  14. $_SESSION[$lang1]=$lang ; 
  15. print_r($_SESSION);
  16. ?>
  17. </body>
  18. </html>


lang.php tutaj odbieramy zmienną lang i wyświetlamy interesujący nas język ten skrypt działa OK do momentu kliknięcia w test, czyli kolejnej "podstrony".
  1. <?
  2. $lang=$_GET['lang'];
  3. $_SESSION['lang'] = $lang; // przypisz jej początkową wartość
  4. ?>
  5. <html>
  6. <head>
  7. <meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
  8. </head>
  9. <body>
  10. <?php
  11. $connection = @mysql_connect('localhost', 'root', '')
  12. or die('brak polaczenia z BD');
  13. $db = @mysql_select_db("page")
  14. or die('Nie mogę połączyć się z bazą danych');
  15. $query = "SELECT tekst FROM main WHERE pozycja ='top'AND lang='$lang'";
  16. $wynik = mysql_query($query);
  17. while ($ROW = mysql_fetch_object($wynik))
  18. {
  19. print "$ROW->tekst ";
  20. echo '<a href="test.php">test</a>';
  21. }
  22.  
  23.  echo 'Aktulanie używanym językiem jest: '.$lang.'.';
  24.  echo ' sesja '.$_SESSION['lang'].'';
  25. print_r($_SESSION);
  26. ?>

test.php
  1. <?
  2.  
  3. $_SESSION['lang'] = $lang; // przypisz jej początkową wartość
  4. ?>
  5. <html>
  6. <head>
  7. <meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
  8. </head>
  9. <body>
  10. <?php
  11.  echo 'Aktulanie używanym językiem jest: '.$lang.'.';
  12.  echo ' sesja '.$_SESSION['lang'].'';
  13. print_r($_SESSION);
  14. ?>


Z góry dziękuje z pomoc.
tsharek
hmm z tego co widzę to w każdym skrypcie przypisujesz do zmiennej sesyjnej jakieś wartości na początku - a to wogle kłuci się z filozofią sesji przekazywanych dalej: po co przenosić zmienne jak i tak je nadpisujesz?

daj na początku każdego skryptu (bądź inkluduj):
  1. <?php
  2. if(isset($_GET['lang'])) $_SESSION['lang']=$_GET['lang']; //jeżeli jest ustawiona zmienna $_GET['lang'] ustawia sesję
  3. if(!isset($_SESSION['lang'])) $_SESSION['lang']='pl'; //jeżeli nie ma usawionej sesji ustaw defaultowy język
  4. ?>


chyba jasno wytłumaczyłem (kod jak zwykle z palucha więc literówki mogą być)
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.