Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Sesje - sprawdzanie kim jest zalogowany user
Mody23
post 14.02.2012, 08:35:07
Post #1





Grupa: Zarejestrowani
Postów: 276
Pomógł: 0
Dołączył: 30.06.2010

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


Witam!

Mam bardzo banalne pytanie, ale nie potrafię sobie poradzić. Jeśli mamy formularzyk logowania i użytkonik się zaloguje to tworzymy session_start(); oraz dorzucamy $_SESSION['nazwa'] == 'zalogowany';. No i dobra, możemy łatwo sprawdzić czy user jest zalogowany:

  1. if ( $_SESSION['nazwa'] == 'zalogowany' )
  2. {
  3. echo "zalogowany i sie cieszy ;)";
  4. }


czy też jest gościem:

  1. if ( $_SESSION['nazwa'] !== 'zalogowany' )
  2. {
  3. echo "gosc ;)";
  4. }


Pytanie - jak ja mam się dowiedzieć, że zalogowany user ma nick "XX" a drugi zalogowany ma "YY" ? Przecież nie mogę tego sprawdzić po $_SESSION['nazwa'] bo to zwróci zawsze każdemu userowi ZALOGOWANY :/

Czy jeśli zrobię tak, że przy logowaniu jak jest formularzyk i sprawdzam dane podane do logowania:

  1. $login = $_POST['login'];
  2. $haslo = md5($_POST['haslo']);
  3. $sql = "SELECT * FROM `users` WHERE login = '".$login."' AND password = '".$haslo."'";
  4. $result = mysql_query($result)
  5. or die("Nie udalo sie pobrac danych");
  6. if ( $ile > 0 )
  7. {
  8. $_SESSION['nazwa'] == $login;
  9. }
  10. else
  11. {
  12. echo "dane sa niepoprawne";
  13. }


I wtedy mógłbym identyfikować usera po nicku:

  1. $_SESSION['nazwa'] == $login;


Pytanie - czy dobrze kombinuję? Głowiłem się nad tym spory czas i tylko to w zasadzie przyszło mi do głowy.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
Sephirus
post 14.02.2012, 08:42:09
Post #2





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


Ogólnie kombinujesz dobrze smile.gif

Tylko zrób nieco inaczej. Do $_SESSION['nazwa'] wrzucaj ID użytkownika lub ewentualnie tablicę składającą się z ID oraz LOGINU.

Sprawdzanie logowania powinno wyglądać tak, że sprawdzasz czy zmienna $_SESSION['nazwa'] w ogóle istnieje

  1. if(isset($_SESSION['nazwa']))
  2. {
  3. // user zalogowany
  4. echo 'Witaj '.$_SESSION['nazwa']['login'];
  5. }


Po co trzymać w sesji ID? Po to że zawsze możesz się po ID usera odwołać do jego danych (jeśli jakieś dodatkowe są). Przy zmianie na przykład hasła przez użytkownika czy potrzebie pobrania adresu e-mail możesz odwoływać się do bazy po jego ID wink.gif

Zatem w twoim skrypcie:
  1. // Zamiast:
  2. if ( $ile > 0 )
  3. {
  4. $_SESSION['nazwa'] == $login; // tu w ogóle jest błąd nie powinno byc "==" a "="
  5. }
  6.  
  7. // daj:
  8. if ( $ile > 0 )
  9. {
  10. $result = mysql_fetch_assoc($result);
  11. $_SESSION['nazwa'] = array('login' => $login,'id' => $result['id']);
  12. }


Ten post edytował Sephirus 14.02.2012, 08:42:19


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post
red.orel
post 14.02.2012, 08:43:52
Post #3





Grupa: Zarejestrowani
Postów: 42
Pomógł: 9
Dołączył: 3.02.2012

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


Użyłeś złego operatora. Masz przypisać wartość (=), a nie porównywać (==).

Kod
$_SESSION['nazwa'] == $login;

zmień na:
Kod
$_SESSION['nazwa'] = $login;


Poczytaj również o filtrowaniu danych.

Ten post edytował red.orel 14.02.2012, 08:44:53
Go to the top of the page
+Quote Post
Mody23
post 14.02.2012, 08:45:03
Post #4





Grupa: Zarejestrowani
Postów: 276
Pomógł: 0
Dołączył: 30.06.2010

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


Tak, machnąłem się tam, powinno być "=".
Ale w sumie to wystarczy mi jego ID zapisać w sesji i tyle, bo po co login, tak jak sam napisałeś. ID jest AUTO_INCREMENT więc mogę samo ID zapisać. Dzięki wielkie smile.gif
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 Wersja Lo-Fi Aktualny czas: 16.07.2025 - 07:34