Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [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

Posty w temacie


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 - 19:03