Query("SELECT id, password, salt, activated FROM users where username = '$Username' LIMIT 1"); $NumRows = $DB->NumRows($CheckUser); if ($NumRows > 0) { $CU = $DB->FetchArray($CheckUser); $UserID = $CU['id']; $StoredPassword = $CU['password']; $Salt = $CU['salt']; $UserActivated = $CU['activated']; $HashedPassword = hash_hmac("sha512", $Password, $Salt); if ($HashedPassword == $StoredPassword && $UserActivated) { unset($_SESSION[$SessLoggedIn]); unset($_SESSION[$SessUserID]); unset($_SESSION[$LoginTime]); unset($_SESSION[$SessIP]); session_destroy(); $CheckGuestLogout = $DB->Query("SELECT login_time, last_active_time FROM user_track WHERE user_id = '0' AND logout_time = '' AND ip = '$UserIP'"); while ($CGL = $DB->FetchArray($CheckGuestLogout)) { $LoginTime = $CGL['login_time']; $LastActiveTime = $CGL['last_active_time']; $DB->Query("UPDATE user_track SET logout_time = '$LastActiveTime' WHERE user_id = '0' AND login_time = '$LoginTime' AND ip = '$UserIP'"); } $CheckUserLogout = $DB->Query("SELECT login_time, last_active_time FROM user_track WHERE user_id = '$UserID' AND logout_time = ''"); while ($CL = $DB->FetchArray($CheckLogout)) { $LoginTime = $CL['login_time']; $LastActiveTime = $CL['last_active_time']; $DB->Query("UPDATE user_track SET logout_time = '$LastActiveTime' WHERE user_id = '$UserID' AND login_time = '$LoginTime'"); } $sess = new SessionManager; session_start(); $_SESSION[$SessLoggedIn] = true; $_SESSION[$SessUserID] = $UserID; $_SESSION[$SessLoginTime] = $CurrentTime; $_SESSION[$SessIP] = $UserIP; $UserTrack = $DB->Query("INSERT INTO user_track (user_id, login_time, last_active_time, user_agent, ip) VALUES ('$UserID', '$CurrentTime', '$CurrentTime', '$UserAgent', '$UserIP')"); if (isset($_POST['remember'])) { $Token = md5(uniqid(microtime())); $CurrentUserAgent = ""; foreach ($Browsers as $Name => $Value) { if ($Value && !$CurrentUserAgent) { !$CurrentUserAgent = $Name; } } setcookie($SessUserID, $UserID, time()+60*60*24*100, "/"); setcookie($SessUserID . "_token", $Token, time()+60*60*24*100, "/"); $DB->Query("INSERT INTO cookies (user_id, token, user_agent) VALUES ($UserID, $Token, $CurrentUserAgent)"); } header("Location: member.php"); } } } /** * Check If Valid Cookie Is Set */ if (isset($_COOKIE[$SessUserID]) && isset($_COOKIE[$SessUserID . "_token"]) && !isset($_SESSION[$SessLoggedIn]) && !isset($_SESSION[$SessUserID]) && !isset($_SESSION[$SessLoginTime]) && !isset($_SESSION[$SessIP])) { $UserID = $_COOKIE[$SessUserID]; $Token = $_COOKIE[$SessUserID . "_token"]; $CheckCookie = $DB->Query("SELECT user_agent FROM cookies WHERE user_id = '$UserID' AND token = '' LIMIT 1"); $NumRows = $DB->NumRows($CheckCookie); $CC = $DB->FetchArray($CheckCookie); $Agent = $CC['user_agent']; if ($NumRows > 0 && $Browsers[$Agent]) { $CheckAccount = $DB->Query("SELECT activated FROM users WHERE id = '$UserID' LIMIT 1"); $NumRows = $DB->NumRows($CheckAccount); $CA = $DB->FetchArray($CheckAccount); $UserActivated = $CA['activated']; if ($NumRows > 0 && $UserActivated > 0) { $CheckGuestLogout = $DB->Query("SELECT login_time, last_active_time FROM user_track WHERE user_id = '0' AND logout_time = '' AND ip = '$UserIP'"); while ($CGL = $DB->FetchArray($CheckGuestLogout)) { $LoginTime = $CGL['login_time']; $LastActiveTime = $CGL['last_active_time']; $DB->Query("UPDATE user_track SET logout_time = '$LastActiveTime' WHERE user_id = '0' AND login_time = '$LoginTime' AND ip = '$UserIP'"); } $CheckUserLogout = $DB->Query("SELECT login_time, last_active_time FROM user_track WHERE user_id = '$UserID' AND logout_time = ''"); while ($CL = $DB->FetchArray($CheckLogout)) { $LoginTime = $CL['login_time']; $LastActiveTime = $CL['last_active_time']; $DB->Query("UPDATE user_track SET logout_time = '$LastActiveTime' WHERE user_id = '$UserID' AND login_time = '$LoginTime'"); } $_SESSION[$SessLoggedIn] = true; $_SESSION[$SessUserID] = $UserID; $_SESSION[$SessLoginTime] = $CurrentTime; $_SESSION[$SessIP] = $UserIP; $UserTrack = $DB->Query("INSERT INTO user_track (user_id, login_time, last_active_time, user_agent, ip) VALUES ('$UserID', '$CurrentTime', '$CurrentTime', '$UserAgent', '$UserIP')"); if (isset($_POST['remember'])) { header("Location: member.php"); } else { setcookie($SessUserID, "", time()-60*60*24*100, "/"); setcookie($SessUserID . "_token", "", time()-60*60*24*100, "/"); header("Location: index.php"); } } } /** * Login User As A Guest */ if (!isset($_SESSION[$SessLoggedIn]) && !isset($_SESSION[$SessUserID]) && !isset($_SESSION[$SessLoginTime]) && !isset($_SESSION[$SessIP])) { $_SESSION[$SessLoggedIn] = false; $_SESSION[$SessUserID] = 0; $CheckGuestLogout = $DB->Query("SELECT login_time, last_active_time FROM user_track WHERE user_id = '0' AND logout_time = '' AND ip = '$UserIP'"); while ($CGL = $DB->FetchArray($CheckGuestLogout)) { $LoginTime = $CGL['login_time']; $LastActiveTime = $CGL['last_active_time']; $DB->Query("UPDATE user_track SET logout_time = '$LastActiveTime' WHERE user_id = '0' AND login_time = '$LoginTime' AND ip = '$UserIP'"); } $_SESSION[$SessLoginTime] = $CurrentTime; $_SESSION[$SessIP] = $UserIP; $UserTrack = $DB->Query("INSERT INTO user_track (user_id, login_time, last_active_time, user_agent, ip) VALUES ('0', '$CurrentTime', '$CurrentTime', '$UserAgent', '$UserIP')"); } /** * Update User Tracking Information */ if (isset($_SESSION[$SessLoggedIn]) &&isset($_SESSION[$SessUserID]) && isset($_SESSION[$SessLoginTime]) && isset($_SESSION[$SessIP])) { $UserID = $_SESSION['$SessUserID']; $LoginTime = $_SESSION[$SessLoginTime]; $IP = $_SESSION[$SessIP]; $DB->Query("UPDATE user_track SET last_active_time = '$CurrentTime' WHERE user_id = '$UserID' AND login_time = '$LoginTime' AND ip = '$IP'"); } /** * Logout User */ if (isset($_GET['signout'])) { setcookie($SessUserID, "", time()-60*60*24*100, "/"); $UserID = $_SESSION[$SessUserID]; $LoginTime = $_SESSION[$SessLoginTime]; $IP = $_SESSION[$SessIP]; $DB->Query("UPDATE user_track SET logout_time = '$CurrentTime' WHERE user_id = '$UserID' AND login_time = '$LoginTime' AND ip = '$IP'"); unset($_SESSION[$SessLoggedIn]); unset($_SESSION[$SessUserID]); unset($_SESSION[$LoginTime]); unset($_SESSION[$SessIP]); session_destroy(); header("Location: index.php"); } ?>