Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Wylogowywanie - problem
Forum PHP.pl > Forum > Przedszkole
kulpek
Witam

Probuje zrobic skrypt rejestracji uzytkownika a pozniej logowania/wylogowywania. Rejestracja i logowanie dzialaja jak nalezy, ale mam problem z wylogowaniem.

czesc skryptu odpowiadajaca za logowanie wyglada tak:

  1. <?php
  2. // rozpoczecie sesji, zarejestrowanie wartosci i przekierowanie
  3. $_SESSION['username'] = $row[1];
  4. $_SESSION['user_id'] = $row[0];
  5. if(isset($_SESSION['user_id'])) {
  6. $query = "UPDATE users SET last_login=NOW() WHERE user_id='$row[0]'";
  7. $result = @mysql_query($query);
  8. }
  9.  
  10. ob_end_clean(); // usuniecie bufora
  11.  
  12. header ("Location: http://" . $_SERVER['HTTP_HOST'] . "/index.php");
  13. exit();
  14. ?>



i teraz na stronie glownej sprawdzam czy istnieje zmienna $_SESSION['username'].. jesli nie to dolaczam formularz, a jesli istnieje to odnosnik do wylogowania... znajduje sei on w osobnym pliku, ktory wyglada tak:

  1. <?php
  2. if (!isset($_SESSION['username'])) { // jesli nie istnieje zmienna username uzytkownik zostanie przekierowany
  3. header ("Location: http://" . $_SERVER['HTTP_HOST'] . "/index.php");
  4. ob_end_clean(); // usuwanie bufora.
  5. exit(); // zakonczenie skrytpu
  6. } else { // wylogowanie uzytkownika.
  7. $_SESSION = array();
  8. if (isset($_COOKIE[session_name()])) {
  9.  setcookie(session_name(), '', time()-42000, '/', '', 0);
  10. }
  11. }
  12. ?>




i teoretycznie po kliknieciu w odnosnij wyloguj powinno mnie przenosic na strone glowna i pokazywac formularz, ale tak sie nie dzieje tylko dalej widze link do wyloguj.php Sad

Dlaczego tak sie dzieje? moze ktos mi pomoc? pozdro
Gość
Miałem podobny problem, z wylogowaniem się, tylko sprawdź sobie czy sesja, podczas wylogowania się kasuje, i czy cookies się kasuje
kulpek
Wlasnie w tym problem, ze ani jedno ani drugie sie nie kasuje sad.gif
marcio
moze przed session_destroy daj:
  1. <?php
  2. unset($_SESSION['username']);
  3. unset($_SESSION['user_id']);
  4. ?>

Ogolnie to tu
  1. <?php
  2. else { // wylogowanie uzytkownika.
  3. $_SESSION = array();
  4. if (isset($_COOKIE[session_name()])) {
  5.  setcookie(session_name(), '', time()-42000, '/', '', 0);
  6. }
  7. }
  8. ?>

Nie widze zadnego przekierowywania i upewnij sie ze nazwa cookie i czas jest taki sam jak przy wysylaniu

EDIT: Literowka w kodzie
kulpek
moj blad... wkleilem stary kod.. teraz mam cos takiego:

  1. <?php #wylogowanie
  2. if (!isset($_SESSION['username'])) { // jesli nie istnieje zmienna username uzytkownik zostanie przekierowany
  3. header ("Location: http://" . $_SERVER['HTTP_HOST'] . "/index.php");
  4. ob_end_clean(); // usuwanie bufora.
  5. exit(); // zakonczenie skrytpu
  6. } else { // wylogowanie uzytkownika.
  7. $_SESSION = array();
  8.  setcookie(session_name(), '', time()-42000, '/', '', 0);
  9. unset($_SESSION['username']);
  10. unset($_SESSION['user_id']);
  11. header ("Location: http://" . $_SERVER['HTTP_HOST'] . "/index.php");
  12. exit();
  13. }
  14. ?>


ale skrypt dalej nie dziala
czachor
Spróbuj to:
  1. <?php
  2. // Usuń wszystkie zmienne sesyjne
  3. $_SESSION = array();
  4.  
  5. // Jeśli pożądane jest zabicie sesji, usuń także ciasteczko sesyjne.
  6. // Uwaga: to usunie sesję, nie tylko dane sesji
  7. if (isset($_COOKIE[session_name()])) {
  8.  setcookie(session_name(), '', time()-42000, '/');
  9. }
  10.  
  11. // Na koniec zniszcz sesję
  12. ?>
kulpek
Dziala, wielkie dzieki smile.gif wiem, ze z manuala ale wczesniej niepotrzebnie kombinowalem z tym smile.gif proste rozwiaania sa najlepsze 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.