Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Przekierowanie przy sprawdzaniach sesji.
Forum PHP.pl > Forum > PHP
ŁukaszŁ.
Cześć!

Napisałem skrypt do logowania oraz kontroli sesji na każdej podstronie. Ale mam kilka pytań, skrypt wygląda mniej więcej tak:

logowanie.html > loguj.php( tutaj użytkownik jest autoryzowany oraz zmienna superglobalna $_SESSION zostaje ustawiona na login usera, następnie user zostanie przekierowany za pomocą header location na inną stronę a jeżeli błędnie wprowadził dane to wysyłamy go opcją header location do logowanie.html) > glowna.php (tutaj następuję kontrola sesji, jeżeli zmienna $_SESSION nie jest ustawiona do leci user na logowanie.html za pomocą header location).

A moje pytanie:

1) Czy używanie header(loation:) do kierowania userów jest bezpieczne? I czy tak powinno się kierować userów? Chciałbym możliwie najbardziej oddzielić html od php i w skryptach nie umieszczać wyników bez wcześniejszej autoryzacji za pomocą pliku przejściowego takiego jak loguj.php, który służy tylko do tego, żeby kierować ruchem smile.gif
2) Czy kontrolę sesji na podstronach bezpieczniej byłoby sprawdzać w taki sposob:

if(isset($_Session[login]) && isset($_Session[id_w_bazie])){
$sql= select id,login from jakas_tabela where id=$id_w_bazie and login=$ogin
$wynik=db->query($sql)
if($_SESSION[login]==$wynik[1] && $SESSION[id]==$wynik[0])
return true;
else
return false
}
else return false;

Czy wystarczy samo if(isset($_Session[login]) && isset($_Session[id_w_bazie])) ?
ksenonlogin
Witam

Tak na szybko to zrobiłbym to tak:
Oczywiście przekierowanie jak najbardziej, jednak przed przekierowaniem nie zapominaj o zabijaniu sesji i dla bezpieczeństwa generuj za każdym razem nowe id sesji.


  1. $id_root = $_SESSION['id_root'];
  2. $login_root = $_SESSION['login_root'];
  3. if ((empty($_SESSION['id_root'])) OR (empty($_SESSION['login_root'])) OR (empty($_SESSION['ip_root'])) OR (($_SESSION['ip_root']) !== ($_SERVER['REMOTE_ADDR']))) {
  4.  
  5. unset($_SESSION['id_root']);
  6. unset($_SESSION['login_root']);
  7. unset($_SESSION['ip_root']);
  8. header("Location: login.php");
  9.  
  10. }
  11. $status_id_root = mysql_fetch_row(mysql_query("SELECT * FROM administrator WHERE `id_administrator`='$id_root' AND `nazwa_administrator`='$login_root' LIMIT 1"));
  12. if (($status_id_root[0] == 0) OR ($status_id_root[0] !== $_SESSION['id_root']) OR ($status_id_root[1] !== $_SESSION['login_root'])) {
  13.  
  14. unset($_SESSION['id_root']);
  15. unset($_SESSION['login_root']);
  16. unset($_SESSION['ip_root']);
  17. header("Location: login.php");
  18.  
  19. }
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.