Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Prosty sposób na uwierzytelnianie użytkownika
permanent
post
Post #1





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 14.02.2009

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


Witam. Mam prostą stronę w PHP z systemem logowania użytkowników, kilkanaście podstron dostępnych po zalogowaniu i wyświetlane są osobne dane dla każdego użytkownika.

Jaki jest dobry, prosty i bezpieczny sposób na uwierzytelnianie użytkownika?

Jestem początkujący w PHP i chciałbym spytać czy mój sposób jest poprawny?

Plik index.php wyświetla stronę, w nim robię include podszczególnych podstron. Na samym początku mam:


W formularzu logowania jeżeli dane z bazą się zgadzają to podstawiam nick pod pierwszą zmienną, druga zmienna to aktualny adres IP, trzecia to informacja o zalogowaniu:

  1. $_SESSION['user_name'] = $q_user['username'];
  2. $_SESSION['user_ip'] = $_SERVER['REMOTE_ADDR'];
  3. $_SESSION['user_logged'] = 'OK';


Wcześniej jeszcze mam zdefiniowaną prostą funkcję:

  1. function check_session()
  2. {
  3. if($_SESSION['user_logged'] == 'OK' && $_SESSION['user_ip'] == $_SERVER['REMOTE_ADDR']) return 1;
  4. else return 0;
  5. }


No dobra, teraz przed wyświetleniem strony dla użytkownika robię:

  1. if(check_session() == 1)
  2. {
  3. // wyświetlenie podstrony
  4. }


Przykładowe dane dla użytkownika wyciągam w sposób:
  1. $query = mysql_query('SELECT * FROM `data` WHERE `user`="'.$_SESSION['user_name'].'"');


Dodatkowo mam funkcję, która na bieżąco sprawdza czy poruszamy się na stronie (ostatni ruch). Jeżeli przez 2 godziny nie korzystaliśmy ze strony to automatycznie wylogowywuje:

  1. function destroy_session()
  2. {
  3. global $unixtime;
  4. if(check_session() == 1)
  5. {
  6. $expirytime = 7200;
  7. if(!isset($_SESSION['last_trace'])) $_SESSION['last_trace'] = $unixtime;
  8. else if((int)$_SESSION['last_trace'] + $expirytime < $unixtime)
  9. {
  10. $sessionName = session_name();
  11. $_SESSION = array();
  12. if(isset($_COOKIE[$sessionName])) setcookie($sessionName, '', $unixtime - 3600, '/');
  13. return 1;
  14. }
  15. }
  16. }


No i w index.php:
  1. if(destroy_session() == 1) echo 'Zostales wylogowany ze wzgledow bezpieczenstwa';


Proszę o opinie i rady. Strona jest prosta, jednak zawiera poufne dane użytkowników i nie dopuszczam żadnego włamu na stronę. Skrypt ma być prosty i bezpieczny. Kiedyś przy logowaniu miałem session_register(...), jednak mam nową wersje PHP i tego chyba już się nie używa?

Czy cokolwiek zmienić w tym kodzie? Czy jest to na 100% bezpieczny sposób? Pozdrawiam.
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: 25.12.2025 - 01:01