Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] Problem sesji czy bład w kodzie
Ryder
post
Post #1





Grupa: Zarejestrowani
Postów: 74
Pomógł: 1
Dołączył: 5.01.2008

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


Mam taki problem

Wszystko testowane jest na localhoscie na 1 komputerze.

Jest panel użytkownika i panel administracyjny. Najpierw loguje sie na administratora,
a następnie się wylogowuje (nie wyłączając przeglądarki), potem loguje się na uzytkownika i tu pojawia sie problem.

Jeżeli w pasku teraz wpisze sciezke do strony admina(bedąc na koncie uzytkownika), nastepuje włączenie tej strony i wyswietla mi ze jest na nej administrator ( I co ciekawe moge tylko chodzic po tych stronach admina po ktorych wczesmniej chodziłem bedac zalogowany jako admin i oczywiscie po stronach przeznaczonych dla klienta, jezeli wejde na jakomś strone ktorej wczesniej mie załączałem przerzuca mnie do strony logowania)

(czego to jest przyczyna, sesji czy błąd programistyczny, niby usuwam wszystko z sesji, nie wiem pozostaja jakies pozostałości  w buforze)


Natomiast jezeli wyłacze przegladarke i uruchomie ponownie nie mam takiego problemu (konfliktu kont),wtedy wszystko działa dobrze i uzytkownika przerzuca do strony z logowaniem


Plik admin

  1. <?php require_once("../include/session.php"); ?>
  2. <?php fnk_potwierdz_logowanie_pracownik() ?>
  3.  
  4. ...



Plik klient

  1. <?php require_once("include/session.php"); ?>
  2. <?php fnk_potwierdz_logowanie() ?>
  3.  
  4. ...


Plik login
  1. <?php require_once("include/session.php"); ?>
  2. <?php require_once("include/polacz_z_baza.php"); ?>
  3.  
  4. if (fnk_zalogowany()) {
  5. if (strcmp($_SESSION['status'], 'klient') == 0)  {fnk_przejdz_do("klient.php");}
  6. if (strcmp($_SESSION['status'], 'pracownik') == 0) {fnk_przejdz_do("admin.php");}
  7.  
  8. sprawdzenie hasła i loginu 
  9. Jesli ok to
  10.  
  11. $_SESSION['id_uzytk'] = $znaleziony_uzytk['id_uzytkownika'];
  12. $_SESSION['login'] = $znaleziony_uzytk['login'];
  13. $_SESSION['status'] = $znaleziony_uzytk['status'];  // status jest klient lub pracownik
  14.  
  15. if($znaleziony_uzytk['status'] == "klient") {fnk_przejdz_do("klient.php");}
  16. if($znaleziony_uzytk['status'] == "pracownik") {fnk_przejdz_do("admin.php");}
  17.  
  18. }



Plik sesji

  1. <?php
  2. ob_start("ob_gzhandler");
  3. session_cache_limiter("must-revalidate");
  4. require_once("funkcje.php");
  5.  
  6. function fnk_zalogowany() {
  7. return isset($_SESSION['id_uzytk']);
  8. return isset($_SESSION['login']);
  9. return isset($_SESSION['status']);
  10. }
  11.  
  12. function fnk_potwierdz_logowanie_pracownik() {
  13.  
  14. if (!fnk_zalogowany()) {
  15. fnk_przejdz_do("login.php");
  16. }
  17. if (strcmp($_SESSION['status'], 'pracownik') <>0) {
  18.  fnk_przejdz_do("login.php");
  19. }
  20. }
  21.  
  22. function fnk_potwierdz_logowanie() {
  23. if (!fnk_zalogowany()) {
  24. fnk_przejdz_do("login.php");
  25. }
  26. if (strcmp($_SESSION['status'], 'klient') <>0) {
  27.  fnk_przejdz_do("login.php");
  28. }
  29. }
  30. ?>



Plik logout

  1. <?php
  2. $_SESSION = array(); 
  3.  
  4. if(isset($_COOKIE[session_name()])) {
  5. setcookie(session_name(), '', time()-42000, '/');
  6. }
  7.  
  8. //Zniszcz sesje
  9.  
  10.  fnk_przejdz_do("login.php?logout=1");
  11. ?>


  1. <?php
  2. function fnk_przejdz_do($location = NULL) {
  3.  
  4. if ($location != NULL) {
  5. header('Content-Type: text/html; charset=UTF-8');
  6. header("Location: {$location}");
  7. }
  8. }
  9. ?>
Go to the top of the page
+Quote Post
beton
post
Post #2





Grupa: Zarejestrowani
Postów: 13
Pomógł: 2
Dołączył: 5.11.2003
Skąd: Tarnowskie Góry

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


proponuje wywalic usuwanie sesji przez session_destroy(); a zrobienie czegos takiego

  1. <?php
  2. foreach($_SESSION as $k => $v)
  3. $_SESSION[$k] = null;
  4. ?>


ewentualnie zamiast null dac ''
Go to the top of the page
+Quote Post
Ryder
post
Post #3





Grupa: Zarejestrowani
Postów: 74
Pomógł: 1
Dołączył: 5.01.2008

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


Niestety nie pomogło to, ale zauważyłem jescze jedna rzecz

W internet explorer7 i firefox wszystko działa ok i nie mam problemu. Przerzuca uzytkownika gdy chce wejsc na konto admina.

W opera i internet explorer 6 da sie wejsc na konto admina
Go to the top of the page
+Quote Post
marcio
post
Post #4





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

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


Narnolmalniejsza rzecz tez sie zdziwilem piszac cms'a ale robiac to na sesjach nie zamykajac przegladarki i nie wylogowyjac na tym samym kompie 2 sesje nie dzialaja i dlatego tak sie dzieje w sumie z cookie chyba jest to samo zaraz sprawdze
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 23.08.2025 - 04:03