ďťż
Podstrony
|
telcocafeWitam.Mam takie pliki: logowanie.php <?php SESSION_start(); if(isset($_COOKIE['logowanie'])) { $_SESSION['logowanie']="zalogowany"; header('location: logowanie2.php'); } else { if($login=='admin' && $password=='haslo') { $_SESSION['logowanie']="zalogowany"; if($autologowanie=='loguj') { setcookie("logowanie", "zalogowany", time()+3600); echo 'cookie ustawione'; } header('location: logowanie2.php'); } else { echo '<center><font face="Arial">Nie zalogowano</font></center>'; } } ?> <form action="" method="POST"><br> <center><table><tr><td><font face="Arial">Login : </font><input type="text" name="login"></td></tr> <tr><td><font face="Arial">Hasło : </font><input type="password" name="password"></td></tr> <tr><td><font face="Arial">Zapamiętaj </font><input type="checkbox" name="autologowanie" value="loguj"></td></tr> <tr><td><input type="submit" value="Wyslij"><input type="reset" value="Wyczysc"></td></tr></table></center> </form> logowanie2.php <?php SESSION_start(); $logowanie==$_SESSION['logowanie']; if($logowanie =='zalogowany') { echo 'dziala'; echo '<form action="wyloguj.php" method="POST"><br><br>'; echo '<input type="submit" value="Wyloguj">'; } else { echo 'xxx'; } ?> wyloguj.php <? setcookie("logowanie",false,time()-3600); header('location: logowanie.php'); ?> I jest problem, gdyż zalogować się zaloguje :) Tylko, gdy kliknę na wyloguj, wyświetli się strona z logowaniem, że niby nie zalogowano, ale gdy wejdę na logowanie2.php to widzę stronę jak po zalogowaniu... Próbowałem dać setcookie("logowanie","",time()-3600); (chyba tak to szlo :P), jednak nadal nie działa... Co może być źle? Pozdrawiam Dużo błędów... (Nie rób na register_globals, bo to powoduje niestrawność). Błąd jest chociażby w$logowanie==$_SESSION['logowanie'];Co to jest? Operator porównania, a nie przypisania. No i zdałoby się wyczyścić sesję podczas wylogowania, co nie? Błąd jest chociażby w$logowanie==$_SESSION['logowanie'];Co to jest? Operator porównania, a nie przypisania Zmieniłem, ale to nic nie daje... No i zdałoby się wyczyścić sesję podczas wylogowania, co nie? Więc dlatego się pytam, jak to zrobić? :) Warto poczytać manual... session_unset() i session_destroy() Ja to rozwiązałem tak: loguj.php: @session_regenerate_id(); $_SESSION['inicjuj'] = true; $_SESSION['ip'] = $_SERVER['REMOTE_ADDR']; $_SESSION['uzytkownik'] = 1; $_SESSION['nick'] = $login; echo "Witaj $login, zostałeś zalogowany"; sprawdz.php //niezalogowany: if(!isset($_SESSION['uzytkownik'])) { $_SESSION['uzytkownik'] = 0; } //zalogowany if (isset($_SESSION['inicjuj'])) { if($_SESSION['ip'] !== $_SERVER['REMOTE_ADDR']) { $_SESSION['uzytkownik'] = 0; $_SESSION['inicjuj'] = false; } } Dodatkowo skrypt sprawdza, czy IP usera zgadza się z IP podczas inicjowania sesji (takie zabezpieczenie przed "kradzieżą" sesji) wyloguj.php $_SESSION['uzytkownik'] = 0; $_SESSION['inicjuj'] = false; echo "Zostałeś pomyślnie wylogowany"; Może to nie jest najlepszy skrypt, jeszcze nad nim popracuję, ale chociaż, mam nadzieję, po części Ci pomoże ;) |
|||
Sitedesign by AltusUmbrae. |