Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wylogowywanie
Forum PHP.pl > Forum > PHP
urbizdw
  1. <?php
  2.  
  3. require ("config.cfg");
  4.  
  5. ##Zmienne
  6.  
  7. $polaczenie=mysql_connect("localhost", "root", "blabla1");
  8. $ip=$_SERVER['REMOTE_ADDR'];
  9. $miesiace = array(1 => 'stycznia', 'lutego', 'marca', 'kwietnia', 'maja', 'czerwca', 'lipca', 'sierpnia', 'września', 'października', 'listopada', 'grudnia');
  10. $data=explode("|", date('Y|n|d|H:i:s'));
  11. $data = $data[2] .' ' .$miesiace[$data[1]] .' ' .$data[0] .', ' .$data[3];
  12. $password = $_POST['password'];
  13. $login = $_POST ['username'];
  14. ##Koniec zmiennych 
  15.  
  16.  
  17. if ($polaczenie == false ) {
  18. echo 'Nie mozna nawiazac polaczenie z baza MySQL';
  19. }
  20. $wyb_baze = mysql_query('use users;');
  21. $spr_dane = mysql_query("select * from usernames where login='$login' and password='$password'");
  22. $odp = mysql_fetch_array($spr_dane, MYSQL_ASSOC);
  23.  
  24. if ($odp) {
  25. $_SESSION['login'] = $login;
  26. $_SESSION['haslo'] = $password;
  27. $_SESSION['zalogowany']=1;
  28. echo 'Zalogowany:'.$login.' z IP:'.$ip;
  29. $plik=fopen ($src_logi_db, "a");
  30. fwrite($plik, "$data, Zalogwany $login z IP: $ipn");
  31. fclose($plik);
  32. echo '<a href=login.php?wyloguj=1>Wyloguj</a>';
  33. if ($wyloguj) {
  34. header("Location: login.php");
  35. }
  36. }
  37. ?>



Jak sie zaloguje wyswietla ze sie zalogowalem ale jak zrobic by po kliknieciu na wyloguj usunelo sesje co mam teraz zle?
starach
Zdaje mi się że w nieodpowiednim miejscu masz
if ($wyloguj) {
session_unset();
session_destroy();
header("Location: login.php");
}
Zwróć uwagę że logując się pobierasz z tablicy POST nazwę użytkownika i hasło.
Kiedy klikniesz na wyloguj w tablicy nie ma tych danych przez co zapytanie do bazy nie zwróci żadnego wyniku
i powyższy kod nie zostanie wykonany.
urbizdw
Wiec jak mam pobrac te dane? I jak zmienic kod by dzialalo?
domis86
po pierwsze:
co to jest $wyloguj?
gdzie jest zainicjowane?
nie mow ze uzywasz register_globals...


po drugie:
gdzie sprawdzasz czy uzytkownik juz jest zalogowany? (czyli czy jest $_SESSION['zalogowany'])
teraz wyglada to tak, ze zawsze od nowa logujesz usera - czyli od nowa sprawdzasz login i haslo i zapisujesz zmienne do sesji.
Poczytaj jakies tutoriale o sesjach i logowaniu uzytkownikow


po trzecie:
uruchom sobie jeszcze raz w glowie ten program instrukcja po instrukcji, i zadaj sobie pytanie nastepującej tresci:
"czy taka konstrukcja ma jakikolwiek sens?":


if ($odp) {
...
tu logujesz usera
...
if ($wyloguj) {
...
tu wylogowujesz
...
}
}

czyli logujesz a pozniej od razu wylogowujesz
bronchos
Mniej więcej tak:

  1. <?php
  2. ...
  3.  
  4. if ($odp) {
  5. $_SESSION['login'] = $login;
  6. $_SESSION['haslo'] = $password;
  7. $_SESSION['zalogowany']=1;
  8. echo 'Zalogowany:'.$login.' z IP:'.$ip;
  9. $plik=fopen ($src_logi_db, "a");
  10. fwrite($plik, "$data, Zalogwany $login z IP: $ipn");
  11. fclose($plik);
  12. echo '<a href=login.php?wyloguj=1>Wyloguj</a>';
  13. }
  14. if (isset($_GET['logout']) && $_GET['logout']==1) {
  15. // dla pewności możesz dodać
  16. setcookie('PHPSESSID','');
  17.  
  18. header('Location: /login.php');
  19. die();
  20. }
  21. ?>

A link do wylogowania:
  1. <a href="?logout=1">wyloguj</a>
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.