Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Dziwny problem z sesjami
cisu
post
Post #1





Grupa: Zarejestrowani
Postów: 157
Pomógł: 1
Dołączył: 15.03.2008
Skąd: Mirostowice Dolne

Ostrzeżenie: (0%)
-----


Witam,

nie bardzo wiem co jest źle ale w przybliżeniu postaram się przedstawić co nie działa.

Zacznę od tego, że piszę CMS'a, panel usera działa ale nie działa nawet logowanie do panelu admina.

Nazwa sesji jest inna, chyba powinno działać.

Może po kolei, działa formularz, bo przesyła dane do walidacji (wiem bo jak podam złe dane to mam o tym komunikat). Po przesłaniu, teoretycznie zapisuje dane pod zmiennymi sesji (np. $_SESSION['login'). I tu chyba się zaczynają już problemy, bo dla bezpieczeństwa napisałem funkcję, która sprawdza, czy zalogowany jest użytkownik i czy ma on prawa admina. Nie działało mi to, więc dopisałem trochę i wiem już gdzie jest błąd. Na samym początku funkcji, kiedy przypisuję sobie zmienne
  1. $adminLogin = $_SESSION['login'];

Wychodzi na to, że zmienna $_SESSION['login'] jest cały czas pusta. I nie mam pojęcia czemu. Prędzej jest instrukcja przypisania do niej danych z formularza, do innych zmiennych innych danych. Ale nie działa. Już nie wiem, czy pisać od początku czy co bo mnie trafia. Jak czegoś nie dopisałem, to powiedzcie, dopiszę, tylko proszę, pomóżcie.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
MateuszS
post
Post #2





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

Ostrzeżenie: (0%)
-----


1. Pokaż więcej kodu
2. Skoro pisałeś funkcję, to możliwe że nie przekazałeś zmiennej sesyjnej jako parametr do niej.


--------------------
O! Zimniok :P
Go to the top of the page
+Quote Post
bolo83
post
Post #3





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 20.03.2010

Ostrzeżenie: (10%)
X----


może brakuje session_start(); na początku pliku??
Go to the top of the page
+Quote Post
cisu
post
Post #4





Grupa: Zarejestrowani
Postów: 157
Pomógł: 1
Dołączył: 15.03.2008
Skąd: Mirostowice Dolne

Ostrzeżenie: (0%)
-----


Co do kodu to wierzcie mi, nie ma tam nic nadzwyczajnego, sprawdzałem kilkanaście razy. Po drugie, zmienne sesyjne to raczej zmienne globalne, ale mimo to próbowałem przekazywać z parametrem i nie, żaden sposób nie działa. Po trzecie, może nie jestem z php najlepszy, ale session_start() dałem tongue.gif

Ale kod wygląda mniej więcej tak:

  1. $slogin = trim(htmlspecialchars($_POST['login']));
  2. $spass = sha1(md5(trim(htmlspecialchars($_POST['haslo']))));
  3. $skey = trim(htmlspecialchars($_POST['klucz']));


To wyżej to przypisanie zmiennym tymczasowym danych z formularza, to jeszcze działa.

  1. $_SESSION['admin_login'] = $slogin;
  2. $_SESSION['admin_haslo'] = $spass;
  3. $_SESSION['admin_klucz'] = $skey;
  4. header("Location: index.php");


To (po odpowiedniej walidacji) jest przypisanie zmiennym sesji wcześniej podanych danych, też działa bo przechodzi na index.php więc do tego momentu działa.

Tak wygląda logowanie, jak coś jest nie tak to wywala błędy (w przypadku złych danych), więc wszystko gra.

Problem pojawia się przy sprawdzaniu użytkownika podczas pracy, wychodzi na to, że w ogóle nie ma przy zmiennej $_SESSION['admin_login'] login wcześniej przypisanego i reszty chyba też bo mam na próbę tak, że jak tego nie ma to mi o tym mówi no i nie wiem czemu.

  1. $aLogin = $_SESSION['login'];
  2. $licz = mysql_fetch_row(mysql_query("SELECT COUNT(login) FROM tabelka WHERE login='$aLogin'"));
  3. if($licz[0] != 0) { tutaj mam instrukcje } else { echo "błąd"; // i własnie to się wyświetla }


Rekord w bazie mam, to nie o to chodzi. Sama próba wyświetlenia zmiennej $aLogin kończy się tym, że nie wyświetla nic, więc tak jakby jej w ogóle nie było, a przecież jest.

Może teraz coś podpowiecie?
Go to the top of the page
+Quote Post
misiek08
post
Post #5





Grupa: Zarejestrowani
Postów: 91
Pomógł: 6
Dołączył: 2.02.2008

Ostrzeżenie: (10%)
X----


Zauważ, że w 1 miejscu masz
  1. $_SESSION['admin_login'] = $slogin;

a sprawdzasz
  1. $aLogin = $_SESSION['login'];

czyli login != admin_login.
Go to the top of the page
+Quote Post
cisu
post
Post #6





Grupa: Zarejestrowani
Postów: 157
Pomógł: 1
Dołączył: 15.03.2008
Skąd: Mirostowice Dolne

Ostrzeżenie: (0%)
-----


Tutaj dałem błąd ale rzeczywiste nazwy zmiennych są inne i są takie same. Są może jakieś ograniczenia co do nazw sesji i zmiennych sesji?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 07:34