За последние 24 часа нас посетили 22880 программистов и 1225 роботов. Сейчас ищут 763 программиста ...

Форма обратной связи. Помогите написать скрипт

Тема в разделе "Сделайте за меня", создана пользователем Igorby, 30 сен 2015.

  1. Igorby

    Igorby Новичок

    С нами с:
    30 сен 2015
    Сообщения:
    34
    Симпатии:
    0
    Народ, подскажите скрипт формы обратной связи вместе с html-кодом.
    Самый простенький.
    Форма очень простая, имя, email, текст.
    Дело в том, что письма не приходят на email-адрес. Знаю, что нужен скрипт отправки, через SMTP. Пока что плохо понимаю, что к чему. PHP только начинаю изучать, а форма нужна уже сейчас.

    Заранее всем буду пренепременно благодарен.
     
  2. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    это в "за меня" или "фриланс" надо перенести?
    текущие наработки покажи.
     
  3. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    1. Заходим https://github.com/PHPMailer/PHPMailer

    2. Нажимаем Download ZIP

    3. Распаковываем и получаем папку PHPMailer-master

    4. Выше папки PHPMailer-master создаём файл example.php

    5. Вписываем код в файл example.php

    Код (PHP):
    1. <!DOCTYPE HTML>
    2. <html>
    3. <head>
    4.   <meta charset="UTF-8">
    5.   <title></title>
    6. </head>
    7. <body>
    8.  
    9. <fieldset>
    10. <legend>Отправка письма</legend>
    11. <form method="POST" action="<?=$_SERVER['PHP_SELF']?>">
    12.   <p>Имя: <input type="text" name="subject"></p>
    13.   <p>Сообщение:<br><textarea name="body"></textarea></p>
    14.   <p><input type="submit" value="Отправить"></p>
    15. </form>
    16. </fieldset>
    17.  
    18. <?php
    19. if ( $_SERVER['REQUEST_METHOD'] === 'POST' && !empty($_POST['subject']) && !empty($_POST['body']) ) {
    20.  
    21.   require 'PHPMailer-master/PHPMailerAutoload.php';
    22.  
    23.   $mail = new PHPMailer;
    24.  
    25.   $mail->isSMTP();
    26.   $mail->Host = 'smtp.yandex.ru';
    27.   $mail->SMTPAuth = true;
    28.   $mail->Username = 'sender@example.com'; // полная почта, кто отправляет
    29.   $mail->Password = '123123'; // пароль 
    30.   $mail->SMTPSecure = 'ssl'; // яндекс принимает SSl
    31.   $mail->Port = 465; // яндекс использует 465 порт
    32.  
    33.   $mail->From = 'sender@example.com'; // email кто отсылает
    34.   $mail->FromName = 'Mailer'; // имя кто отсылает
    35.  
    36.   $mail->addAddress('reciver@example.com'); // кому мы отсылаем
    37.  
    38.  
    39.   $mail->isHTML(false); // если не HTML письмо шлём
    40.  
    41.   $mail->Subject = $_POST['subject']; // тема письма
    42.   $mail->Body    = $_POST['body']; // содержание письма
    43.  
    44.  
    45.   if(!$mail->send()) {
    46.       echo 'Ошибка при отправке';
    47.       echo 'Текст ошибки: ' . $mail->ErrorInfo;
    48.   } else {
    49.       echo 'Письмо отправлено';
    50.   }
    51.  
    52. }
     
  4. Igorby

    Igorby Новичок

    С нами с:
    30 сен 2015
    Сообщения:
    34
    Симпатии:
    0
    Код (PHP):
    1. HTML-КОД: 
    Код (PHP):
    1.  
    2. <form class="obr_svyaz" action="check.php" method="post">
    3.     <input type="text" name="name">
    4.     <input type="text" name="email">
    5.     <textarea name="message" class="textarea"></textarea>
    6.     <input type="submit" value="" class="submit">
    7. </form>
    8.  
    Код (PHP):
    1. ФАЙЛ CHEACK.PHP: 
    Код (PHP):
    1. <?php
    2.  
    3. function clean ($value='') {
    4.     $value = trim($value);
    5.     $value = stripslashes($value);
    6.     $value = strip_tags($value);
    7.     $value = htmlspecialchars($value);
    8.     
    9.     return $value;
    10. }
    11.  
    12. function check_lenght ($value='', $min, $max) {
    13.     $result = (mb_strlen($value) < $min || mb_strlen($value) > $max);
    14.     
    15.     return !$result;
    16. }
    17.  
    18. if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    19.     $name = $_POST['name'];
    20.     $email = $_POST['email'];
    21.     $message = $_POST['message'];
    22.     
    23.     $name = clean($name);
    24.     $email = clean($email);
    25.     $message = clean($message);
    26.  
    27. if (!empty($name) && !empty($email) && !empty($message)) {
    28.     $validate_email = filter_var ($email, FILTER_VALIDATE_EMAIL);
    29.     if (check_lenght($name, 2, 25) && check_lenght ($message, 2, 1000) && $validate_email) {
    30.     echo "Спасибо за Ваше сообщение!";        
    31.     }
    32.     else {
    33.         echo "Вы ввели некорректные данные";
    34.     }
    35. }
    36.     else {
    37.         echo "Заполните пустые поля";
    38.         }
    39.     }
    40.     else {
    41.         echo ("Location: ../index.php");
    42.     }
    43.  
    44. ?>
    PHP, JavaScript, SQL и другой код пишите внутри тегов
    Код ( (Unknown Language)):
    1. [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
     
  5. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    Здравствуйте Igorby, я провожу социальный опрос, почему вы проигнорировали моё сообщение?
     
  6. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    ну хз, всё ходит. только нужно добавить функцию отправки сообщения ибо в приложенном листинге её нет
     
  7. Igorby

    Igorby Новичок

    С нами с:
    30 сен 2015
    Сообщения:
    34
    Симпатии:
    0
    Добрый вечер denis01 - я благодарен за помощь. Как только протестирую данный вариант, сразу же отпишусь :)

    Добавлено спустя 20 минут 32 секунды:

    1. Выдает ошибку :
    "Ошибка при отправкеТекст ошибки: SMTP connect() failed. https://github.com/PHPMailer/PHPM"
    2. Какую почту нужно указывать в файле example.php (вместо reciver@example.com)? Я указал, везде свою почту.
     
  8. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
  9. Igorby

    Igorby Новичок

    С нами с:
    30 сен 2015
    Сообщения:
    34
    Симпатии:
    0
    А если я использую почту от мэйла?
     
  10. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    читай инструкцию от майла, её легко найти, например вбив в поиск: настройка smtp mail.ru

    Всё понятно?
     
  11. Shorece

    Shorece Новичок

    С нами с:
    17 авг 2017
    Сообщения:
    4
    Симпатии:
    0
    Адрес:
    Москва
    Подскажите какие выставлять права на файлы и папку, файлы в папке... Скрипт сразу заработал, спасибо. И посоветуйте средства защиты.
     
  12. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    @Shorece какие права, это в книгах по администрированию linux, там по лучше объяснят в главе, чем тут кто-то напишет пару строк.
    Ты спамер?

    Презервативы
     
  13. Shorece

    Shorece Новичок

    С нами с:
    17 авг 2017
    Сообщения:
    4
    Симпатии:
    0
    Адрес:
    Москва
    Нет я не спамер, новичок и были случаи, когда на сервере появлялись файлы, которых я не не размещал, связанных с отправкой спама. Ищу способы борьбы с подобными проявлениями и альтернативными способами отправки почты, встроенные на сервере функции быстро взламываются и я уже боюсь их запускать. Если злоумышленники могут разместить свои файлы, значит возможно выставлены не правильные права. Можете не отвечать, спасибо за направление где искать, действительно нужно начинать с книжки по администрированию. Не с того конца начал, спасибо в любом случае.
     
  14. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    лучше книгу почитать или купить хостинг, там уже всё настроено.

    если есть конкретные вопросы, то пиши
     
  15. Shorece

    Shorece Новичок

    С нами с:
    17 авг 2017
    Сообщения:
    4
    Симпатии:
    0
    Адрес:
    Москва
    у меня VPN-сервер, настраивать нужно все самому, т. к. настройки по-умолчанию и установленный софт (по усмотрению провайдера, видимо с образа) нужно менять.
    --- Добавлено ---
    Данный выше способ позволяет отправлять почту без запуска на сервере всяких почтовых служб, которые через какое-то время становятся источниками спама, я их сразу вырубаю.
     
  16. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    vps?
     
  17. Shorece

    Shorece Новичок

    С нами с:
    17 авг 2017
    Сообщения:
    4
    Симпатии:
    0
    Адрес:
    Москва
    Верно VPS, череп воспалился уже