Mam taki obiekt user_manager.php i on obsluguje wszelkie dzialania nowego uzytkownika tzn od stworzenia konta poprzez logowanie i uaktualnianie ostatniego logowania.... jest jedno ale ..... przy logowaniu na wysokosci funkcji clearLoginEntriesForUser funkcja lapie wyjatek i szuka w stosie catch'a ..... a jedyna chyba opcja napisac catch'a na poziomie skryptu process_login.php .... i ja probowalem napisac zeby mi ta sesje uzytkownika zapisywal ale wyrzuca syntax error, unexpected $end in process_login.php wiem ze blad skladni moze byc banalny ... ale ja jestem poczatkujacy i siedze nad tym dlugo tak wiec moze ktos bardziej doswiadczony looknie..... albo napisze co jest zle .... bo obiekt user_manager ma jeszcze funkcje processLogin i chyba najlepiej by bylo zeby ona dzialala ..... ale nie mam pojecia jak to posklejac <br>user_manager.php<br>
<?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)
{
if ($in_db_conn === NULL and
isset($conn)) $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.
//
if (!isset($_POST['username']) || $_POST['username'] == '' || !isset($_POST['userpass']) || $_POST['userpass'] == '') {
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)
{
}
?>
Ten post edytował Piniek 17.12.2008, 17:50:25
Powód edycji: Poprawiłem bbcode