Народ, подскажите скрипт формы обратной связи вместе с html-кодом. Самый простенький. Форма очень простая, имя, email, текст. Дело в том, что письма не приходят на email-адрес. Знаю, что нужен скрипт отправки, через SMTP. Пока что плохо понимаю, что к чему. PHP только начинаю изучать, а форма нужна уже сейчас. Заранее всем буду пренепременно благодарен.
1. Заходим https://github.com/PHPMailer/PHPMailer 2. Нажимаем Download ZIP 3. Распаковываем и получаем папку PHPMailer-master 4. Выше папки PHPMailer-master создаём файл example.php 5. Вписываем код в файл example.php Код (PHP): <!DOCTYPE HTML> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <fieldset> <legend>Отправка письма</legend> <form method="POST" action="<?=$_SERVER['PHP_SELF']?>"> <p>Имя: <input type="text" name="subject"></p> <p>Сообщение:<br><textarea name="body"></textarea></p> <p><input type="submit" value="Отправить"></p> </form> </fieldset> <?php if ( $_SERVER['REQUEST_METHOD'] === 'POST' && !empty($_POST['subject']) && !empty($_POST['body']) ) { require 'PHPMailer-master/PHPMailerAutoload.php'; $mail = new PHPMailer; $mail->isSMTP(); $mail->Host = 'smtp.yandex.ru'; $mail->SMTPAuth = true; $mail->Username = 'sender@example.com'; // полная почта, кто отправляет $mail->Password = '123123'; // пароль $mail->SMTPSecure = 'ssl'; // яндекс принимает SSl $mail->Port = 465; // яндекс использует 465 порт $mail->From = 'sender@example.com'; // email кто отсылает $mail->FromName = 'Mailer'; // имя кто отсылает $mail->addAddress('reciver@example.com'); // кому мы отсылаем $mail->isHTML(false); // если не HTML письмо шлём $mail->Subject = $_POST['subject']; // тема письма $mail->Body = $_POST['body']; // содержание письма if(!$mail->send()) { echo 'Ошибка при отправке'; echo 'Текст ошибки: ' . $mail->ErrorInfo; } else { echo 'Письмо отправлено'; } }
Код (PHP): HTML-КОД: Код (PHP): <form class="obr_svyaz" action="check.php" method="post"> <input type="text" name="name"> <input type="text" name="email"> <textarea name="message" class="textarea"></textarea> <input type="submit" value="" class="submit"> </form> Код (PHP): ФАЙЛ CHEACK.PHP: Код (PHP): <?php function clean ($value='') { $value = trim($value); $value = stripslashes($value); $value = strip_tags($value); $value = htmlspecialchars($value); return $value; } function check_lenght ($value='', $min, $max) { $result = (mb_strlen($value) < $min || mb_strlen($value) > $max); return !$result; } if ($_SERVER['REQUEST_METHOD'] == 'POST') { $name = $_POST['name']; $email = $_POST['email']; $message = $_POST['message']; $name = clean($name); $email = clean($email); $message = clean($message); if (!empty($name) && !empty($email) && !empty($message)) { $validate_email = filter_var ($email, FILTER_VALIDATE_EMAIL); if (check_lenght($name, 2, 25) && check_lenght ($message, 2, 1000) && $validate_email) { echo "Спасибо за Ваше сообщение!"; } else { echo "Вы ввели некорректные данные"; } } else { echo "Заполните пустые поля"; } } else { echo ("Location: ../index.php"); } ?> PHP, JavaScript, SQL и другой код пишите внутри тегов Код ( (Unknown Language)): [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
Добрый вечер denis01 - я благодарен за помощь. Как только протестирую данный вариант, сразу же отпишусь Добавлено спустя 20 минут 32 секунды: 1. Выдает ошибку : "Ошибка при отправкеТекст ошибки: SMTP connect() failed. https://github.com/PHPMailer/PHPM" 2. Какую почту нужно указывать в файле example.php (вместо reciver@example.com)? Я указал, везде свою почту.
Igorby ну скажем ты используешь почту от яндекс, читай инструкцию для smtp https://yandex.ru/support/mail/mail-clients.xml
читай инструкцию от майла, её легко найти, например вбив в поиск: настройка smtp mail.ru Всё понятно?
Подскажите какие выставлять права на файлы и папку, файлы в папке... Скрипт сразу заработал, спасибо. И посоветуйте средства защиты.
@Shorece какие права, это в книгах по администрированию linux, там по лучше объяснят в главе, чем тут кто-то напишет пару строк. Ты спамер? Презервативы
Нет я не спамер, новичок и были случаи, когда на сервере появлялись файлы, которых я не не размещал, связанных с отправкой спама. Ищу способы борьбы с подобными проявлениями и альтернативными способами отправки почты, встроенные на сервере функции быстро взламываются и я уже боюсь их запускать. Если злоумышленники могут разместить свои файлы, значит возможно выставлены не правильные права. Можете не отвечать, спасибо за направление где искать, действительно нужно начинать с книжки по администрированию. Не с того конца начал, спасибо в любом случае.
лучше книгу почитать или купить хостинг, там уже всё настроено. если есть конкретные вопросы, то пиши
у меня VPN-сервер, настраивать нужно все самому, т. к. настройки по-умолчанию и установленный софт (по усмотрению провайдера, видимо с образа) нужно менять. --- Добавлено --- Данный выше способ позволяет отправлять почту без запуска на сервере всяких почтовых служб, которые через какое-то время становятся источниками спама, я их сразу вырубаю.