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:
$_SESSION['user_name'] = $q_user['username']; $_SESSION['user_ip'] = $_SERVER['REMOTE_ADDR']; $_SESSION['user_logged'] = 'OK';
Wcześniej jeszcze mam zdefiniowaną prostą funkcję:
function check_session() { if($_SESSION['user_logged'] == 'OK' && $_SESSION['user_ip'] == $_SERVER['REMOTE_ADDR']) return 1; else return 0; }
No dobra, teraz przed wyświetleniem strony dla użytkownika robię:
if(check_session() == 1) { // wyświetlenie podstrony }
Przykładowe dane dla użytkownika wyciągam w sposób:
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:
function destroy_session() { if(check_session() == 1) { $expirytime = 7200; else if((int)$_SESSION['last_trace'] + $expirytime < $unixtime) { return 1; } } }
No i w index.php:
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.