/** * функция проверки авторизации админа * Берет логин и пароль админа из сесси и сверяет их с данными в БД * * @param (string) $login - новый логин (может быть false) * @param (string) $password - новый пароль (может быть false) * * @return bool (сообщение перезагружающее страницу) */ static function changeAdminPassword($login, $password) { $link = isset($_SERVER['QUERY_STRING']) && !empty($_SERVER['QUERY_STRING']) ? '?' . $_SERVER['QUERY_STRING'] : ''; if ($login && $password) { $change = "login='******', password='******'"; $arrSession = array('administrator_login' => md5($login), 'administrator_password' => md5($password)); } elseif (!$login && $password) { $change = "password='******'"; $arrSession = array('administrator_password' => md5($password)); } elseif ($login && !$password) { $change = "login='******'"; $arrSession = array('administrator_login' => md5($login)); } else { $change = false; } $strQuery = "UPDATE " . USR_PREFIX . "admin SET " . $change . " WHERE login IN (" . secure::escQuoteData($_SESSION['administrator_login']) . ") AND password IN (" . secure::escQuoteData($_SESSION['administrator_password']) . ")"; if (!empty($change) && db::dbQuery($strQuery)) { // обновляем пароль в сессии tools::updateSessionData($_SESSION, $arrSession); messages::messageChangeSaved(MESSAGE_DATA_HAS_BEEN_CHANGED, false, CONF_ADMIN_FILE . $link); } else { messages::messageChangeSaved(MESSAGE_DATA_HAS_NOT_BEEN_CHANGED, false, CONF_ADMIN_FILE . $link); } }
$new_password = md5($_POST['new_password']); if (md5($_POST['password']) !== $_SESSION['sd_user']['data']['password']) { $arrErrors[] = ERROR_PASSWORD; } if (strlen($_POST['new_password']) < CONF_REGISTER_USER_PASSWORD) { $arrErrors[] = ERROR_PASSWORD_SHORT; } if (md5($_POST['password']) === md5($_POST['new_password'])) { $arrErrors[] = ERROR_PASSWORD_NOT_NEW_PASSWORD; } if ($_POST['new_password'] !== $_POST['confirm_password']) { $arrErrors[] = ERROR_PASSWORD_NOT_CONFIRM_PASSWORD; } } else { $arrErrors[] = ERROR_EMPTY_FIELDS; } if (!$arrErrors) { $user->updateUser(array('password' => md5($_POST['new_password'])), "id IN (" . secure::escQuoteData($_SESSION['sd_user']['data']['id']) . ")"); // обновляем пароль в сессии tools::updateSessionData($_SESSION['sd_user']['data'], array('password' => md5($_POST['new_password']))); messages::messageChangeSaved(MESSAGE_PASSWORD_HAS_BEEEN_CHANGED, false, chpu::createChpuUrl(CONF_SCRIPT_URL . 'index.php?ut=' . $_SESSION['sd_user'][DB_PREFIX . 'conf']['user_type'] . '&do=user.data')); } else { $smarty->assignByRef('errors', $arrErrors); } } } else { messages::error404(); } } else { messages::error404(); }
/** * protected функция обновления данных пользователя * функция может использоваться лишь в том случае, если пользователь вошел на сайт (его данные есть в сессии) * * @param (array) $arrData - массив данных пользователя для записи в основную таблицу пользователей or false * @param (array) $arrConfData - массив данных пользователя для записи в таблицу настроек пользователей or false * * @return bool */ protected function updateUserData($arrData, $arrConfData) { // если переданы данные, для обновления в общей таблице пользователей if ($arrData) { // обновляем данные if (!$this->updateUser($arrData, "id IN (" . secure::escQuoteData($_SESSION['sd_user']['data']['id']) . ")")) { return false; } else { // если данные обновились, обновляем их и в сессии tools::updateSessionData($_SESSION['sd_user']['data'], $arrData); } } // если переданы данные для обновления в общей таблице настроек пользователей if ($arrConfData) { $this->changeTable('conf_users'); if (!$this->updateUser($arrConfData, "id IN (" . secure::escQuoteData($_SESSION['sd_user']['data']['id']) . ")")) { // изменяем рабочую таблицу $this->changeTable('users', USR_PREFIX); return false; } else { // изменяем рабочую таблицу $this->changeTable('users', USR_PREFIX); // если данные обновились, обновляем их и в сессии tools::updateSessionData($_SESSION['sd_user'][DB_PREFIX . 'conf'], $arrConfData); } } return true; }