ďťż

[PHP] Skrypt logowania i wylogowanie sesji jak?

       

Podstrony


telcocafe

Witam.
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 ;)

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.