Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Problem z sesja logowania
Forum PHP.pl > Forum > PHP
demoh
Witam

Mam pewien problem z sesja wylogowania sie, na jednej z podstron zauwazylem ze po wylogowaniu po odswierzeniu jej samoistnie sie loguje.

Jest taki schemat:

Loguje sie -> wylogowywuje sie -> chdze po podstronach -> wchodze na "popsuta" i jest caly czas ok -> odswierzam ja i jestem spowrotem zalogowany.... dziwne?

Najsmiesniejsze jest to ze zmienne globalne sa wylaczone, nadpisywanie zmiennych sesyjnych danymi jest tylko jesli wystapi zmienna typu POST a dokladniej 2, przy wylogowywaniu sie zmienne sesyjne sa nadpisywane przez neutralne wartosci i to dziala na 100%, nigdzie indziej nie ma nadpisywania tych zmiennych odpowiedzialnych za zalogowanie.

A teraz najlepsze: Moge przy wylogowaniu zniszczyc sesje, usunac zmienne, moge wszedzie zachaszowac nadpisywane tych zmiennych sesyjnych, usunac ciastka, historie i pliki z przegladarki i jak odswierze ta trefna podstrone to znowu mnie loguje.....

To wyglada jak czarna magi i klatwa nalozona na skrypt sad.gif

Moze macie jakies pomysly ?
wipo
A napisz na tej stronie
  1. <?php
  2. print_r($_SESSION);
  3. ?>


druga rzecz to pokaż w jaki sposób wylogowujesz usera
demoh
logowanie:

  1. <?php
  2. $_SESSION['user_id'] = $data['id'];
  3. $_SESSION['user_name'] = $data['name'];
  4. $_SESSION['user_power'] = $data['account_power'];
  5. $_SESSION['user_lang'] = $data['lang'];
  6. ?>


wylogowywanie:

  1. <?php
  2. $_SESSION['user_id'] = -1;
  3. $_SESSION['user_name'] = "noname";
  4. $_SESSION['user_power'] = -1;
  5. ?>



a blad juz znalazlem, w trefnym pliku byla zmienna $user_id i sie psula reszta :/
przy wylaczonych zmienncych globalnych moze sie tak dziac?
wipo
Troche dziwnie robisz to wylogowywanie
Nie prościej tak:
  1. <?php
  2. ?>

Co do zmiennych globalnych to nie wiem, ale czasem zmienna sesyjna też mi się robiła zmienną globalną
demoh
Na pierwszy rzut oka dziwne wylogowywanie ale wszystkie te zmienne musza byc w skrypcie a warosc -1 jest wartoscia neutralna.

Jak dodaje wpisy w bazie to w tedy mam prosciej jak widze w polu -1 i to oznacza ze to wpis od anonymousa tongue.gif

A w skrypcie tez sprawdzam czy user_id >= 0 czy mniejsze smile.gif


A cale logowanie u mnie tak wyglada:

  1. <?php
  2. if(isset($_POST['login_login']) && isset($_POST['login_pass']) && isset($_POST['login_token']) && isset($_SESSION['token_login']))
  3. {
  4. //zczytujemy tokena i kasujemy jego sesje
  5. $token_login_active = $_SESSION['token_login'];
  6. unset($_SESSION['token_login']);
  7.  
  8. //zczytujemy to gdzie mamy isc po zalogowaniu i kasujemy jego sesje
  9. if(isset($_SESSION['login_go_to']))
  10. {
  11. $go_to_logged = "/". $_SESSION['login_go_to'];
  12. unset($_SESSION['login_go_to']);
  13. }
  14. elseif(isset($_SESSION['last_page']))
  15. {
  16. $go_to_logged = $_SESSION['last_page'];
  17. }
  18. else
  19. {
  20. $go_to_logged = "/";
  21. }
  22.  
  23. //sprawdzamy poprawnosc tokena logina i hasla
  24. $logged_check = 0;
  25.  
  26. if(token_check($token_login_active, $_POST['login_token']) == 0)
  27. {
  28. //podany token jest niepoprawny
  29. $logged_check++;
  30. }
  31.  
  32. $logged_check += string_check($_POST['login_login'], 4, 16);
  33. $logged_check += string_check($_POST['login_pass'], 8, 16);
  34.  
  35. if($logged_check == 0)
  36. {
  37. $login_check = mysql_real_escape_string($_POST['login_login']);
  38. $pass_chceck = md5($_POST['login_pass']);
  39.  
  40. //logujemy go
  41. $query = mysql_query("SELECT * FROM `users` WHERE name='$login_check' AND password='$pass_chceck' AND active='1'");
  42. if(mysql_numrows($query) > 0)
  43. {
  44. $query = mysql_query("SELECT * FROM `users` WHERE name='$login_check' AND password='$pass_chceck'");
  45. while($data = mysql_fetch_array($query))
  46. {
  47. $_SESSION['user_id'] = $data['id'];
  48. $_SESSION['user_name'] = $data['name'];
  49. $_SESSION['user_power'] = $data['account_power'];
  50. $_SESSION['user_lang'] = $data['lang'];
  51. }
  52.  
  53. //skaczemy do strony go to
  54. header("Location: ". $go_to_logged);
  55. }
  56. }
  57. }
  58. ?>
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.