Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Zmienna w sesji
Forum PHP.pl > Forum > Przedszkole
karolusgt
Hej.
Ja pewnie z błahą sprawą. Mam problem ze zmienną sesyjną. Mianowicie muszę przetłumaczyć stronkę z samochodami na kilka języków. Samochody są podzielone na grupy(różne strony). Każda strona zaczyna się od poniższego kodu:
Kod
<?PHP
session_register();
if (!isset($_SESSION['jezyk']))
         {
                                                       // jeśli zmienna nie jest zarejestrowana
         $_SESSION['jezyk'] ='polski';   // przypisz wartość
         }      
$jezyk2=$_SESSION['jezyk']; // dla wygody
?>

Na stronie znajdują się flagi, po kliknięciu których zmienia się język na stronie. Dzieje się to za pomocą:
Kod
<?php
session_register();
$_SESSION['jezyk'] ='angielski';   // przypisz wartość  
include('index.php');
?>


Jak widać ani długie ani skomplikowane. Dla mnie jednak owszem sciana.gif . Po wybraniu języka na stronie zmienia się co trzeba. Jednak jeśli wybiorę język angielski a następnie kliknę na link do innej kategorii samochodów (strony są identyczne), to język ponownie powraca do wartości 'polski'. I tu pojawia się mój problem. Co zrobić żeby strona zapamiętywała ostatnio wybrany język? Dlaczego po każdej zmianie kategorii język wraca do języka polskiego?
Z góry dzięki wielkie dla MĄDRYCH ludzi za wsparcie smile.gif
Pozdrowionka guitar.gif


// poprawiłem tytuł bo go zwyczajnie nie podałeś
// proszę, pamiętaj o tym w przyszłości
// ayeo
isso
a masz na stronach session_start(); ?
karolusgt
A to nie to samo przypadkiem? Z tego co wiem to bardzo zbliżone funkcje. session_start() używałem, ale po zmianie kategorii wyskakiwał mi komunikat że sesja już była nawiązana i zignorowano próbę ponownego jej nawiązania. Więc zmieniłem. Ale mogę być w błędzie!!!
EarthCitizen
Cytat
wyskakiwał mi komunikat że sesja już była nawiązana i zignorowano próbę ponownego jej nawiązania.

Żeby zignorować ten komunikat użyj:
  1. <?php
  2. error_reporting(E_ALL ^E_NOTICE);
  3. ?>


Więcej na temat error_reporting() http://php.net.pl/manual/pl/function.error-reporting.php
Chrom
Cytat z manuala "session_register — Zarejestruj jedną lub więcej zmiennych globalnych w bieżącej sesji"
czyli za każdym razem starasz się zainicjować nową sesję poprzez przypisanie wartości daj session_start(); na początku i powinno być ok.
ferrero2
session_start(); na początku skryptu w każdej podstronie + sprawdzenie linków w skrypcie.

Jeżeli masz kodowanie UTF8 na stronie to upewnij się (np. za pomocą notepad++) czy nie wysyłasz tzw. BOM. To jest najczęstrzy problem przy sesjach przy tym kodowaniu. Nigdy nie musiałem używać error_reporting(E_ALL ^E_NOTICE);

Pozdrawiam

karolusgt
Kurcze to forum jest niesamowite!!!!!!!
Nie wiem po raz który uzyskałem tu pomoc.
Jak zwykle 1-2 drobne zmiany w kodzie i wszystko działa.

LUDZIE JESTEŚCIE NIESAMOWICI!!!!!
Są w tym kraju jeszcze Życzliwi ludzie czarodziej.gif
Z góry jeszcze raz dzięki wszystkim 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.