/** * Обратная связь */ public function contact() { $request = Request::input('request'); if (Request::isMethod('post')) { $email = Request::input('email'); $name = Request::input('name'); $message = Request::input('message'); $captcha = Request::input('captcha'); $errors = []; if (!App::isMail($email)) { $errors['email'] = 'Неверный формат адреса email'; } if (!$name) { $errors['name'] = 'Небходимо заполнить имя отправителя'; } if (!$message) { $errors['message'] = 'Необходимо заполнить текст сообщения'; } if ($captcha != $_SESSION['captcha']) { $errors['captcha'] = 'Неверный проверочный код'; } if (!$errors) { $message = nl2br(e($message)); $to = [env('SITE_EMAIL') => env('SITE_ADMIN')]; $subject = 'Новое письмо с сайта'; $body = App::view('mailer.contact', compact('subject', 'message', 'request'), true); $headers['from'] = [$email => $name]; // Отправка письма App::sendMail($to, $subject, $body, $headers); App::setFlash('success', 'Письмо успешно отправлено!'); App::redirect('/'); } else { App::setFlash('danger', $errors); App::setInput($_POST); App::redirect('/contact'); } } App::view('pages.contact', compact('request')); }
/** * Восстановление пароля */ public function recovery() { if (User::check()) { App::abort(403); } if (Request::isMethod('post')) { $email = Request::input('email'); $captcha = Request::input('captcha'); $errors = []; if (!App::isMail($email)) { $errors['email'] = 'Неверный формат адреса email'; } if ($captcha != $_SESSION['captcha']) { $errors['captcha'] = 'Неверный проверочный код'; } if (!$errors && !($user = User::find_by_email($email))) { $errors['email'] = 'Пользователь не найден'; } if (!$errors) { $user->reset_code = str_random(mt_rand(35, 40)); $user->save(); $reset_link = 'http://' . Setting::get('sitelink') . '/reset?key=' . $user->reset_code; $message = 'Здравствуйте, ' . e($user->login) . '<br />Вами была произведена операция по восстановлению пароля на сайте ' . Setting::get('sitelink') . '<br />Для того, чтобы восстановить пароль, необходимо нажать на кнопку восстановления<br /><br />Если это письмо попало к вам по ошибке или вы не собираетесь восстанавливать пароль, то просто проигнорируйте его'; $to = [$user->email => $user->login]; $subject = 'Восстановление пароля'; $body = App::view('mailer.recovery', compact('subject', 'message', 'reset_link'), true); // Отправка письма App::sendMail($to, $subject, $body); App::setFlash('success', 'Письмо с инструкцией выслано вам на email!'); } else { App::setFlash('danger', $errors); App::setInput($_POST); } App::redirect('/recovery'); } App::view('users.recovery'); }