request->get('code')) { // Код не совпадает - прекращяем работу if(empty($_SESSION['admin_password_recovery_code']) || empty($c) || $_SESSION['admin_password_recovery_code'] !== $c) { header('Location:password.php'); exit(); } // IP не совпадает - прекращяем работу if(empty($_SESSION['admin_password_recovery_ip'])|| empty($_SERVER['REMOTE_ADDR']) || $_SESSION['admin_password_recovery_ip'] !== $_SERVER['REMOTE_ADDR']) { header('Location:password.php'); exit(); } // Если запостили пароль if($new_password = $simpla->request->post('new_password')) { // Файл с паролями $passwd_file = $simpla->config->root_dir.'simpla/.passwd'; // Удаляем из сесси код, чтобы больше никто не воспользовался ссылкой unset($_SESSION['admin_password_recovery_code']); unset($_SESSION['admin_password_recovery_ip']); // Если в файлы запрещена запись - предупреждаем об этом if(!is_writable($passwd_file)) { print "

Восстановление пароля администратора

Файл /simpla/.passwd недоступен для записи.

Вам нужно зайти по FTP и изменить права доступа к этому файлу, после чего повторить процедуру восстановления пароля.

"; } else { // Новый логин и пароль $new_login = $simpla->request->post('new_login'); $new_password = $simpla->request->post('new_password'); if(!$simpla->managers->update_manager($new_login, array('password'=>$new_password))) $simpla->managers->add_manager(array('login'=>$new_login, 'password'=>$new_password)); print "

Восстановление пароля администратора

Новый пароль установлен

Перейти в панель управления

"; } } else { // Форма указалия нового логина и пароля print "

Восстановление пароля администратора

Новый логин:


Новый пароль:


"; } } else { print "

Восстановление пароля администратора

Введите email администратора

"; $admin_email = $simpla->settings->admin_email; if(isset($_POST['email'])) { if($_POST['email'] === $admin_email) { $code = $simpla->config->token(mt_rand(1, mt_getrandmax()).mt_rand(1, mt_getrandmax()).mt_rand(1, mt_getrandmax())); $_SESSION['admin_password_recovery_code'] = $code; $_SESSION['admin_password_recovery_ip'] = $_SERVER['REMOTE_ADDR']; $message = 'Вы или кто-то другой запросил ссылку на восстановление пароля администратора.
'; $message .= 'Для смены пароля перейдите по ссылке '.$simpla->config->root_url.'/password.php?code='.$code.'
'; $message .= 'Если письмо пришло вам по ошибке, проигнорируйте его.'; $simpla->notify->email($admin_email, 'Восстановление пароля администратора '.$simpla->settings->site_name, $message, $simpla->settings->notify_from_email); } print "Вам отправлена ссылка для восстановления пароля. Если письмо вам не пришло, значит вы неверно указали email или что-то не так с хостингом"; } } ?>