login.php.tmp
来自「PHP 知识管理系统(基于树结构的知识管理系统), 英文原版的PHP源码。」· TMP 代码 · 共 423 行 · 第 1/2 页
TMP
423 行
exit(0); } function do_login() { $aExtra = array(); $oUser =& KTInterceptorRegistry::checkInterceptorsForAuthenticated(); if (is_a($oUser, 'User')) { $res = $this->performLogin($oUser); if ($res) { $oUser = array($res); } } if (is_array($oUser)) { foreach ($oUser as $oError) { if (is_a($oError, 'KTNoLocalUser')) { $aExtra = kt_array_merge($aExtra, $oError->aExtra); } } } KTInterceptorRegistry::checkInterceptorsForTakeOver(); $this->check(); global $default; $language = KTUtil::arrayGet($_REQUEST, 'language'); if (empty($language)) { $language = $default->defaultLanguage; } setcookie("kt_language", $language, 2147483647, '/'); $redirect = KTUtil::arrayGet($_REQUEST, 'redirect'); $url = $_SERVER["PHP_SELF"]; $queryParams = array(); if ($redirect !== null) { $queryParams[] = 'redirect=' . urlencode($redirect); } $username = KTUtil::arrayGet($_REQUEST,'username'); $password = KTUtil::arrayGet($_REQUEST,'password'); if (empty($username)) { $this->simpleRedirectToMain(_kt('Please enter your username.'), $url, $queryParams); } $oUser =& User::getByUsername($username); if (PEAR::isError($oUser) || ($oUser === false)) { if (is_a($oUser, 'ktentitynoobjects')) { $this->handleUserDoesNotExist($username, $password, $aExtra); } $this->simpleRedirectToMain(_kt('Login failed. Please check your username and password, and try again.'), $url, $queryParams); exit(0); } if (empty($password)) { $this->simpleRedirectToMain(_kt('Please enter your password.'), $url, $queryParams); } $authenticated = KTAuthenticationUtil::checkPassword($oUser, $password); if (PEAR::isError($authenticated)) { $this->simpleRedirectToMain(_kt('Authentication failure. Please try again.'), $url, $queryParams); exit(0); } if ($authenticated !== true) { $this->simpleRedirectToMain(_kt('Login failed. Please check your username and password, and try again.'), $url, $queryParams); exit(0); } $res = $this->performLogin($oUser); if ($res) { $this->simpleRedirectToMain($res->getMessage(), $url, $queryParams); exit(0); } } function handleUserDoesNotExist($username, $password, $aExtra = null) { if (empty($aExtra)) { $aExtra = array(); } // Check if the user has been deleted before allowing auto-signup $delUser = User::checkDeletedUser($username); if($delUser){ return ; } $oKTConfig = KTConfig::getSingleton(); $allow = $oKTConfig->get('session/allowAutoSignup', true); if($allow){ $res = KTAuthenticationUtil::autoSignup($username, $password, $aExtra); if (empty($res)) { return $res; } if (is_a($res, 'User')) { $this->performLogin($res); } if (is_a($res, 'KTAuthenticationSource')) { $_SESSION['autosignup'] = $aExtra; $this->redirectTo('autoSignup', array( 'source_id' => $res->getId(), 'username' => $username, )); exit(0); } } } function do_autoSignup() { $oSource =& $this->oValidator->validateAuthenticationSource($_REQUEST['source_id']); $oProvider =& KTAuthenticationUtil::getAuthenticationProviderForSource($oSource); $oDispatcher = $oProvider->getSignupDispatcher($oSource); $oDispatcher->subDispatch($this); exit(0); } function do_checkCookie() { $cookieTest = KTUtil::arrayGet($_COOKIE, "CookieTestCookie", null); $cookieVerify = KTUtil::arrayGet($_REQUEST, 'cookieVerify', null); $url = $_SERVER["PHP_SELF"]; $queryParams = array(); $redirect = KTUtil::arrayGet($_REQUEST, 'redirect'); if ($redirect !== null) { $queryParams[] = 'redirect='. urlencode($redirect); } if ($cookieTest !== $cookieVerify) { Session::destroy(); $this->simpleRedirectToMain(_kt('You must have cookies enabled to use the document management system.'), $url, $queryParams); exit(0); } // check for a location to forward to if ($redirect !== null) { $url = $redirect; // else redirect to the dashboard if there is none } else { $url = KTUtil::kt_url(); $config = KTConfig::getSingleton(); $redirectToBrowse = $config->get('KnowledgeTree/redirectToBrowse', false); $redirectToDashboardList = $config->get('KnowledgeTree/redirectToBrowseExceptions', ''); if ($redirectToBrowse) { $exceptionsList = explode(',', str_replace(' ','',$redirectToDashboardList)); $user = User::get($_SESSION['userID']); $username = $user->getUserName(); $url .= (in_array($username, $exceptionsList))?'/dashboard.php':'/browse.php'; } else { $url .= '/dashboard.php'; } } exit(redirect($url)); }}/** * Check if the last user logging in from the same IP as the current user timed out in the last hour. * * @param unknown_type $userId * @return unknown */function checkLastSessionUserID($userId){ // Get the current users IP Address $sIp = '%'.$_SERVER['REMOTE_ADDR']; // Get the time for a day ago and an hour ago $dif = time() - (24*60*60); $sDayAgo = date('Y-m-d H:i:s', $dif); $dif2 = time() - (60*60); $sHourAgo = date('Y-m-d H:i:s', $dif2); // Get the session id for the last user to log in from the current IP address within the last day // Use the session id to find if that user logged out or timed out within the last hour. $sQuery = 'SELECT user_id, action_namespace FROM user_history WHERE datetime > ? AND session_id = (SELECT session_id FROM user_history WHERE comments LIKE ? AND datetime > ? ORDER BY id DESC LIMIT 1) ORDER BY id DESC LIMIT 1'; $aParams = array($sHourAgo, $sIp, $sDayAgo); $res = DBUtil::getOneResult(array($sQuery, $aParams)); if(PEAR::isError($res) || empty($res)){ return false; } // Check whether the user timed out and whether it was the current user or a different one if($res['action_namespace'] == 'ktcore.user_history.timeout' && $res['user_id'] != $userId){ return true; } return false;}$dispatcher =& new LoginPageDispatcher();$dispatcher->dispatch();?>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?