Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Przekierowanie przy sprawdzaniach sesji., header(location:)
ŁukaszŁ.
post
Post #1





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 20.08.2012

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/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])) ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
ksenonlogin
post
Post #2





Grupa: Zarejestrowani
Postów: 123
Pomógł: 3
Dołączył: 29.10.2011

Ostrzeżenie: (0%)
-----


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. }
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 10.10.2025 - 13:06