Здравствуйте. Достаточно ли этого для защиты от email инъекций? PHP: if (!empty ($_POST['name'])) { $name = strip_tags($_POST['name']); } else { $_SESSION['alerts']['e'][] = '<b>Помилка!</b> Необхідно ввести їм\'я.'; } if (!empty ($_POST['email'])) { $email = strip_tags($_POST['email']); if (!filter_var ($email, FILTER_VALIDATE_EMAIL)) { $_SESSION['alerts']['e'][] = '<b>Помилка!</b> Ви ввели некоректну адресу електронної пошти E-mail.'; } } else { $_SESSION['alerts']['e'][] = '<b>Помилка!</b> Необхідно ввести адресу електронної пошти (E-mail).'; }if (mail ('support@lada.kl.com.ua', $textShort.' ('.$name.')', $text, "From: $email")) { $_SESSION['alerts']['s'][] = '<b>Виконано!</b> Ваше повідомлення було відправлено. Очікуйте, будь ласка, на відповідь.'; } else { $_SESSION['alerts']['e'][] = '<b>Помилка!</b> Не вдалося відправити повідомлення.'; } } if (!empty ($_POST['text'])) { $text = strip_tags($_POST['text']); if (mb_strlen ($text) >= 2000) { $_SESSION['alerts']['e'][] = '<b>Помилка!</b> Повідомлення не може бути довшим за 2000 символів.'; } } else { $_SESSION['alerts']['e'][] = '<b>Помилка!</b> Необхідно ввести повідомлення.'; } if (empty ($_SESSION['alerts']['e'])) { if (mb_strlen ($text) > 15) { $textShort = mb_substr ($text, 0, 15).'...'; } else { $textShort = $text; } if (mail ('support@lada.kl.com.ua', $textShort.' ('.$name.')', $text, "From: $email")) { $_SESSION['alerts']['s'][] = '<b>Виконано!</b> Ваше повідомлення було відправлено. Очікуйте, будь ласка, на відповідь.'; } else { $_SESSION['alerts']['e'][] = '<b>Помилка!</b> Не вдалося відправити повідомлення.'; } }
Зачем PHP: $email = strip_tags($_POST['email']); если потом используешь filter_var? В итоге ты отправляешь письмо 2 раза? на 13 и 33 строке Что такое email-инъекция в твоём понимании? Не хочешь использовать phpMailer?
нет не хотим if ( mail () ) { ... } от этого избавляемся https://secure.php.net/manual/ru/function.mail.php#refsect1-function.mail-returnvalues
Ну хз, от взлома, например. Вообще, от всего. Хочу чтоб вообще никакой опасности мой скрипт не предоставлял --- Добавлено --- У меня виртуальный хостинг. Я так понимаю, phpmailer нужно устанавливать? --- Добавлено --- Передать ф-ции такую строку, которая закроет кавычку и внедрит вредоносный код, отправит спам, например... --- Добавлено --- В итоге получилось так: PHP: function mail_utf8($to, $from_user, $from_email, $subject = '(No subject)', $message = '') { $from_user = "=?UTF-8?B?".base64_encode($from_user)."?="; $subject = "=?UTF-8?B?".base64_encode($subject)."?="; $headers = "From: $from_user <$from_email>\r\nMIME-Version: 1.0\r\nContent-type: text/html; charset=UTF-8\r\n"; return mail($to, $subject, $message, $headers); } PHP: if (isset ($_POST['sendmail'])) { if (isset ($_SESSION['mailDelay'])) { $timeBack = 600 - (time() - $_SESSION['mailDelay']); if ($timeBack < 0) { unset ($_SESSION['mailDelay']); } } if (!isset ($_SESSION['mailDelay'])) { if (!empty ($_POST['name'])) { $name = strip_tags($_POST['name']); } else { $_SESSION['alerts']['e'][] = '<b>Помилка!</b> Необхідно ввести їм\'я.'; } if (!empty ($_POST['email'])) { if (filter_var ($_POST['email'], FILTER_VALIDATE_EMAIL)) { $email = $_POST['email']; } else { $_SESSION['alerts']['e'][] = '<b>Помилка!</b> Ви ввели некоректну адресу електронної пошти E-mail.'; } } else { $_SESSION['alerts']['e'][] = '<b>Помилка!</b> Необхідно ввести адресу електронної пошти (E-mail).'; } if (!empty ($_POST['text'])) { $text = strip_tags($_POST['text']); if (mb_strlen ($text) >= 2000) { $_SESSION['alerts']['e'][] = '<b>Помилка!</b> Повідомлення не може бути довшим за 2000 символів.'; } } else { $_SESSION['alerts']['e'][] = '<b>Помилка!</b> Необхідно ввести повідомлення.'; } if (empty ($_SESSION['alerts']['e'])) { if (mb_strlen ($text) > 15) { $textShort = mb_substr ($text, 0, 15).'...'; } else { $textShort = $text; } mail_utf8('support@lada.kl.com.ua', $name, $email, $email, $text); $_SESSION['mailDelay'] = time (); $_SESSION['alerts']['s'][] = '<b>Виконано!</b> Ваше повідомлення було відправлено. Очікуйте, будь ласка, на відповідь.'; } } else { $timeLeft = 600 - (time() - $_SESSION['mailDelay']); $minutes = floor ($timeLeft / 60); $seconds = $timeLeft % 60; if ($minutes == 0) { $string = $seconds.' '.getNumEnding($seconds, array('секунда', 'секунди', 'секунд')); } else { $string = $minutes.' '.getNumEnding($minutes, array('хвилина', 'хвилини', 'хвилин')).', '.$seconds.' '.getNumEnding($seconds, array('секунда', 'секунди', 'секунд')); } $_SESSION['alerts']['e'][] = '<b>Захист від спаму!</b> Повторне відправлення повідомлення буде доступне не раніше ніж через 10 хвилин<br>(Залишилось: <b>'.$string.'</b>).'; } }
Вся установка: Код (Text): composer require phpmailer/phpmailer или composer.json Код (Text): "phpmailer/phpmailer": "~5.2" Потом останется настроить под свои нужды и можно пользоваться.Удобная вещь
Потребуется только композер и больше ничего.Если хочешь можешь подробнее ознакомиться: https://github.com/PHPMailer/PHPMailer
композер это файл пхп --- Добавлено --- чтобы защищаться от чего-то, надо знать, от чего защищается. На всяк-всяк защиты не бывает. Иначе бы не было взломов. Все бы защищались универсально от всего и наперёд. Не бывает такого.
есть и инсталяторы - для удобства. они прописывают пути так, чтобы можешь пользоваться им, как консольной командой. https://getcomposer.org/composer.phar
Так а чё с ним делать? Часть этого файла вообще, по ходу, содержит бинарный код) https://pp.userapi.com/c638126/v638126065/2fa99/ob8CWJ_lLWU.jpg
Браузер качает файл composer.phar. А при подключении этого файла на индекс (require './composer.phar') начинает падать куча ошибок.
да вы е*у дали, дайте мужику заверстать эти чертовы пару строк с filter + mail. какой нафуй кампоты? дайте ему придрочиться к основному, что вы со своими плагинами левыми суетесь всего навсего filter + mail --- Добавлено --- @SamyRed Мужик, ты сам для себя ужасы всякие придумываешь и лепишь велосипеды. Крепче яйца и не еби мозг не себе ни людям!
@SamyRed это консольная утилита. её надо дёрнуть из консоли. это можно сделать например из консоли, или из пхп вызвать. забей. тебе пока рано. =) пили так, руками докидывай в проект всё, что нужно.