Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Logowanie, bezpieczeństwo sesji, dobrze czy źle?
Forum PHP.pl > Forum > PHP
xeo
Mam pliki do logowania do panelu ale nie wiem czy wszystko jest poprawnie zrobione, jeżeli coś jest źle to piszcie poprawie.
index.php (logowanie):
  1. <?php
  2.  
  3. if (!isset($_SESSION['kontrola_sesji'])){
  4. $_SESSION['kontrola_sesji'] = true;
  5. $_SESSION['adres_ip'] = $_SERVER['REMOTE_ADDR'];
  6. }
  7. if($_SESSION['adres_ip'] !== $_SERVER['REMOTE_ADDR']){
  8. $info = "Błąd: Próba przejęcia sesji!";
  9. }
  10.  
  11. // użytkownicy
  12. include('users.php');
  13.  
  14. $login = $_POST['login'];
  15. $haslo = $_POST['haslo'];
  16.  
  17. $haslo = sha1($haslo);
  18. foreach($uzytkownicy as $id => $dane) {
  19. if($dane['login'] == $login && $dane['haslo'] == $haslo) {
  20. $_SESSION['uzytkownik'] = $id;
  21. }
  22. }
  23.  
  24. $info = "";
  25.  
  26. if(isset($_SESSION['uzytkownik'])) {
  27. header ('Location: panel.php');
  28. } else {
  29. if(isset($id) && !empty( $_POST['login'] ) && !empty( $_POST['haslo'] )) {
  30. $info = "Podałeś zły login lub hasło!";
  31. }
  32. ?>
  33.  
  34. formularz logowania
  35.  
  36. <?php
  37. }
  38. ?>
users.php (użytkownicy i hasła):
  1. <?php
  2. $uzytkownicy = array(=>
  3.  array('login' => 'user1', 'haslo' => sha1('u1')),
  4.  array('login' => 'user2', 'haslo' => sha1('u2'))
  5. );
  6. ?>
panel.php (strona widoczna po zalogowaniu):
  1. <?php
  2.  
  3. if(isset($_SESSION['uzytkownik'])) {
  4. ?>
  5.  
  6. strona widoczna po zalogowaniu
  7.  
  8. <?php
  9. } else {
  10. header ('Location: index.php');
  11. }
  12. ?>


i druga sprawa to bezpieczeństwo sesji, a dokładnie czy kod:
  1. <?php
  2. if (!isset($_SESSION['kontrola_sesji'])){
  3. $_SESSION['kontrola_sesji'] = true;
  4. $_SESSION['adres_ip'] = $_SERVER['REMOTE_ADDR'];
  5. }
  6. if($_SESSION['adres_ip'] !== $_SERVER['REMOTE_ADDR']){
  7. $info = "Błąd: Próba przejęcia sesji!";
  8. }
  9. ?>
muszę dodać do każdego pliku?
dadexix
php automatycznie kojaży ip, przegladarke i inne z sessją i użycie da niepowodzenie
xeo
Nie wiem czy dobrze zrozumiałem, czyli wystarczy dać ten kod tylko w pliku z logowaniem?
Mlodycompany
jak masz pętle foreach to w warunku dodaj break; ponieważ gdy masz 100 userów i user który chce sie zalogować jest pierwszy to wyszuka go, ale nadal bedzię szukało go w tablicy, a break; zastopuje działanie pętli czyli skrypt będzie bardziej optymalny
xeo
ok dzięki break dodany smile.gif
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.