<?php private function private function clearLoginEntriesForUser ( $in_userid, $in_db_conn = NULL ) { throw new InvalidArgumentException(); // // upewnia się, czy dysponujemy połączeniem z bazą danych // if ($in_db_conn == NULL) $conn = connection(); else $conn = $in_db_conn; try { // // usuwa wszelkie wiersze odpowiadające temu użytkownikowi // z tabeli LoggedInUsers $querystr = <<<EOQUERY DELETE FROM LoggedInUsers WHERE user_id = $in_userid EOQUERY; $results = @$conn->query($querystr); if ($results === FALSE) throw new DatabaseErrorException($conn->error); } catch (Exception $e) { $conn->close(); throw $e; } // // porządkuje po sobie i wraca // if ($in_db_conn === NULL) $conn->close(); } public function processLogin($in_user_name,$in_user_passwd) { if ($in_user_name == '' || $in_user_passwd == '') throw new InvalidArgumentException(); $conn = connection(); try { $userid = $this->confirmUserNamePassword($in_user_name, $in_user_passwd, $in_db_conn); $this->clearLoginEntriesForUser($userid); $query = <<<EOQUERY INSERT INTO loggedinusers(user_id,sessionid, last_update) VALUES ('$userid', '$session_id', now()) EOQUERY; $result = @$conn->query($query); if($result === FALSE) throw new DatabaseErrorException($conn->error); } catch (Exception $e) { $conn->close(); throw $e; } $conn->close(); } ?>
process_login.php
<?php require_once('user_manager.php'); // // kroki procesu przetwarzania logowania: // // 0. rozpoczęcie sesji // 1. weryfikacja danych użytkownika // 2. przesłanie danych do obiektu UserManager do przetwarzania. // // 6. przekierowanie na stosowną stronę. // // // dla zachowania zwięzłości kodu pominiemy kilka // elementów zabezpieczających sugerowanych w rozdziale 15 // // // 1. sprawdza, czy mamy wszystkie potrzebne dane. // { throw new InvalidInputException(); } else { $user_name = $_POST['username']; $user_pass = $_POST['userpass']; } // 2. UserManager przetwarza logowanie. // try { $usermgr = new UserManager(); $usermgr->processLogin($user_name, $user_pass); } catch (Exception $e) { } ?>