Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Sesje - sprawdzanie kim jest zalogowany user
Forum PHP.pl > Forum > Przedszkole
Mody23
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.
Sephirus
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. }
red.orel
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.
Mody23
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
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.