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
 
Start new topic
Odpowiedzi
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 561
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
, to chętnie je przeczytam jeśli będą wnosić coś więcej niż docinke
Yyy, że co? Jaką docinkę? Wypisujesz totalnie niepotrzebne rzeczy a ja ci zwracam na to uwagę. To nie jest żadna docinka,tylko zwrócenie uwagi, bo jeszcze jakiś początkujący, jak autor tego tematu, pomyśli że tak ma być. Wyluzuj chłopie bo ci żyłka na czole pęknie.

Cytat
po co walidacja ? jak to każdego formularza. Na podstawie tego loginu i hasła idzie zapytanie do bazy, chyba że o czymś nie wiem
Mówimy tu o haśle. I hasła zazwyczaj do bazy nie wstawia się tak jak wpisuje user, tylko stosuje się hashe i tym podobne rzeczy.
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: 30.12.2025 - 04:34