За последние 24 часа нас посетил 22151 программист и 1073 робота. Сейчас ищет 641 программист ...

Почему я получаю пустую почту?

Тема в разделе "PHP для новичков", создана пользователем Алексей87К, 22 окт 2017.

  1. Алексей87К

    Алексей87К Новичок

    С нами с:
    5 янв 2017
    Сообщения:
    157
    Симпатии:
    4
    Здравствуйте! Подскажите пожалуйста, что здесь не так?
    PHP:
    1. $to = 'a.site@gmail.com';
    2.  
    3.                      $name = strip_tags(trim($_POST['name']));
    4.                      $email = strip_tags(trim($_POST['email']));
    5.                      $skype = strip_tags(trim($_POST['skype']));
    6.                      $sms = strip_tags(trim($_POST['sms']));
    7.                      $message = "Имя пользователя: ".$name."\r\n";
    8.                      $message .= "Почта: ".$email."\r\n";
    9.                      $message .= "Skype: ".$skype."\r\n";
    10.                      $message .= "Сообщение: ".$sms."\r\n";
    11.  
    12.  
    13.  
    14.                         $tema = "=?utf-8?B?".base64_encode($subject)."?=";
    15.                         $headers = "From: $from\r\nReply-to: $from\r\nContent-type:text/plain; charset=utf-8\r\n";
    16.                         mail($to, $tema, $message, $headers);
    HTML:
    1. <div class="popupcontact">
    2.             <div class="wrapper">
    3.                  <div class="popupcontacttitle" id="about">Оставьте заявку сейчас и получите бесплатную консультацию!</div>
    4.                  <form id="form" method="post" action="form.php" class="popupform">
    5.                      <input type="text" placeholder="Ваше имя" id="name" name="name"  value="<?=$_POST['name'] ?? '' ?>"  />
    6.  
    7.                      <input type="email" placeholder="Ваша почта" id="email" name="email"  value="<?=$_POST['email'] ?? '' ?>" />
    8.  
    9.                      <input type="text" placeholder="Ваш Skype"  name="skype" value="<?=$_POST['skype'] ?? '' ?>" />
    10.                      <textarea name="sms" cols="5" rows="10" placeholder="Ваше сообщение" value="<?=$_POST['sms'] ?? '' ?>" ></textarea>
    11.  
    12.                      <div>
    13.                          <button type="submit" id="sbm">Оставьте заявку</button>
    14.                      </div>
    15.                  </form>
    16.  
    17.               </div>
    18.             </div>
    а на почту получаю:
    mail.png
     
  2. alexpride1993

    alexpride1993 Новичок

    С нами с:
    28 мар 2016
    Сообщения:
    56
    Симпатии:
    20
    Хммм..... Наверное потому что кто-то отправляет пустую форму или напрямую дергает form.php (проверки request method'а же нет, да?)
     
  3. Алексей87К

    Алексей87К Новичок

    С нами с:
    5 янв 2017
    Сообщения:
    157
    Симпатии:
    4
    Нет, это я отправляю почту на данный момент) ... я ввёл для эксперемента if (isset($_POST['submit'])) {} Так уменя вообще ничего не отправилось. Может ли это быть из-за хостинга? Может они его отключают? Я уже не знаю, как проверить. Подскажите способы проверок!
     
  4. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    Затем, что юзай тот же phpMailer и не парься ни о чем. Отправка email не такая простая вещь, как кажется. Там хренова туча стандартов и уязвимостей протокола и прочих тонкостей. Это вот тот случай, когда действительно лучше юзать готовое отполированное решение, чем пытаться костылить свое. Конечно, знать, как это все работает - нужно. И, в случае чего, уметь написать свой мэйлер тоже полезный навык. Но когда надо на продакшене развернуть почтовый модуль для сайта, пусть лучше его сердцем будет проверенное решение.
     
  5. Каменьвогород

    С нами с:
    19 окт 2017
    Сообщения:
    12
    Симпатии:
    1
    А вы уверены, что ключ 'submit' вообще есть в массиве $_POST?
    Я вот смотрю на ваш код и мне почему-то кажется, что его там нет.
     
    TeslaFeo нравится это.
  6. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.989
    Симпатии:
    759
    очевидно, что введенные данные не доходят. Пройдись по цепочке и всё проверь.
    --- Добавлено ---
    Вот инструкция по phpMailer.
    Правда, три года ей, и код в примере написан в старом стиле.
    Но работать будет.
     
  7. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.743
    Симпатии:
    1.319
    Адрес:
    Лень
    не правильно проверяешь POST
     
  8. Алексей87К

    Алексей87К Новичок

    С нами с:
    5 янв 2017
    Сообщения:
    157
    Симпатии:
    4
    а как правильно?
    --- Добавлено ---
    Конечно, при добавлении условия, я добавил в форму name="submit"
    PHP:
    1. <button type="submit" id="sbmmain" name="submit">Оставить заявку</button>
    --- Добавлено ---
    Конечно, при добавлении условия, я добавил в форму name=
    Я слишком долго возился с этими ошибками, исправлял. И сейчас вы предлагаете всё зачеркнуть и начать всё заново с какого-то phpMailer, который опять таки, неизвестно, если сработает? Почему вы раньше этого не посоветовали? К примеру, несколько дней назад!?
    --- Добавлено ---
    "Создаем класс, расширяющий PHPMailer" ... Даже не указанно, в каком файле это всё создавать?
     
  9. denis01

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

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

    https://secure.php.net/manual/ru/language.oop5.inheritance.php
     
  10. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    Синдром игрока - вредное искажение восприятия. Молодец, что потратил на это время и силы. Это бесценный опыт, который тебе не раз пригодится. Но цепляться за что-то только потому, что "я же делал..." не правильно.
    Слво "какой-то" в отношении phpMailer применимо так же, как "программирование на каком-то языке" или "сервер на каком-то линуксе". Без обид, но "какое-то" это про твое решение, а phpMailer, наряду со свифтом - библиотеки, входящие в "золотой стандарт", так сказать. То, что какой-то начинающий разработчик и оних не слышал и даже не пытался искать инфу о решениях в этой сфере, никак не меняет вышеописанные факты.
    А должен был? Что еще я обязан сделать? А может, я должен в будущее заглянуть и все твои проблемы заренее решить? Сожалею, но я так не умею. У меня есть ряд физических ограничений, не позволяющих перемещаться во времени.
    Действительно, в каком? Быть может...в любом, каком захочешь? Тебе же нужно просто класс запилить. Ты это можешь сделать как и где угодно. Речь идет о простом ООП. Не усложняй простые вещи :) Выключай истерику, включая рационализм. Профессия обязывает.
     
  11. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.989
    Симпатии:
    759
    потому, что это очевидно. создаешь где хочешь, называешь как хочешь.
    всем похер, на самом деле. делай как хош.
    не доволен еще.
     
  12. Алексей87К

    Алексей87К Новичок

    С нами с:
    5 янв 2017
    Сообщения:
    157
    Симпатии:
    4
    "Создаем класс, расширяющий PHPMailer" ... Даже не указанно, в каком файле это всё создавать?
    Речь не о том, что должен был, а о том, что ты в моих темах сидишь уже давно. Я их много создавал и мы долго беседовали над моими ошибками. И теперь, когда я уже в конце пути и мне нужно всего лишь добить вопрос, почему не возвращается данные на почту и ответ может быть в одну строчку, вы предлагаете мне развернуться назад, уничтожив всё то затраченное время? Неужели не понимаете, что это как минимум странно? Тем более, я никогда не имел дело с phpMailer, что означает, что я потрачу ещё кучу времени на код!
    --- Добавлено ---
    И это было разве к вам обращено? Чтобы вы так на вопросы отвечали, как придираетесь, тогда ответ был бы у меня ещё несколько дней назад! Зачем разводить пустую болтовню и тратить время на острословие? Может делом займёмся?
    --- Добавлено ---
    Так в каком файле? Мне что, просто создать любой файл и скопировать код??? А дальше что!? Как он будет привязан к config.php? И как связать это потом с формами?
     
    #12 Алексей87К, 22 окт 2017
    Последнее редактирование: 22 окт 2017
  13. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.989
    Симпатии:
    759
    Да пожалуйста.
    var_dump($_POST); //что показывает?
    это нужно было проверить в первую очередь.
     
  14. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.743
    Симпатии:
    1.319
    Адрес:
    Лень
    Зю: и тут приходит ангел с небес под фоновую музыку АААААААААААААААААААААААААААААА :eek:
    :D
    PHP:
    1. if ( $_SERVER['REQUEST_METHOD'] === 'POST' )
    2. {
    3.     $ARGS = [
    4.         'name' => FILTER_SANITIZE_FULL_SPECIAL_CHARS,
    5.         'email' => FILTER_VALIDATE_EMAIL,
    6.         'skype' => [ 'filter' => FILTER_VALIDATE_REGEXP, 'options' => [ 'regexp' => '/^[a-zA-Z0-9]{1,}$/' ] ],
    7.         'sms' => FILTER_SANITIZE_FULL_SPECIAL_CHARS
    8.     ];
    9.    
    10.     $INPUTS = filter_input_array ( INPUT_POST, $ARGS );
    11.    
    12.     $E = [];
    13.    
    14.     if ( in_array ( NULL, $INPUTS, TRUE ) )
    15.     {
    16.         $E[] = 'Undefined inputs :(';
    17.     }
    18.     else
    19.     {
    20.         if ( !$INPUTS['email'] )
    21.         {
    22.             $E[] = 'Мыло не варик';
    23.         }
    24.         if ( !$INPUTS['skype'] )
    25.         {
    26.             $E[] = 'Скайп бомжовский';
    27.         }
    28.         if ( empty ( $INPUTS['sms'] ) )
    29.         {
    30.             $E[] = 'Текста ноль';
    31.         }
    32.     }
    33.    
    34.     if ( empty ( $E ) )
    35.     {
    36.         exit ( implode ( '<br>', $E ) );
    37.     }
    38.    
    39.     # PHPMailer class...
    40.  
    41.     /* ... */
    42. }
    https://php.ru/forum/threads/48871/#post-396315

    https://github.com/PHPMailer
    --- Добавлено ---
     
  15. Алексей87К

    Алексей87К Новичок

    С нами с:
    5 янв 2017
    Сообщения:
    157
    Симпатии:
    4
    Так в каком файле? Мне что, просто создать любой файл и скопирова
    Вообще ничего не показало... Почему? И ещё... Если раньше, до того как я поставил проверку if мне ещё что-то приходило на почту, пусть и пустое письмо, то сейчас, вообще ничего не приходит... Может это информация что-то скажет...
    PHP:
    1. $to = 'a.kovalkovsky@gmail.com';
    2.                  if (isset($_POST['submit'])) {
    3.                     if(!empty($_POST['name'])){$name = strip_tags(trim($_POST['name']));}
    4.                     if(!empty($_POST['email'])){$email = strip_tags(trim($_POST['email']));}
    5.                     if(!empty($_POST['skype'])){$skype = strip_tags(trim($_POST['skype']));}
    6.                     if(!empty($_POST['sms'])){$sms = strip_tags(trim($_POST['sms']));}
    7.                      $message = "Имя пользователя: ".$name."\r\n";
    8.                      $message .= "Почта: ".$email."\r\n";
    9.                      $message .= "Skype: ".$skype."\r\n";
    10.                      $message .= "Сообщение: ".$sms."\r\n";
    11.  
    12.  
    13.                          var_dump($_POST);
    14.                        
    15.                         $tema = "=?utf-8?B?".base64_encode($subject)."?=";
    16.                         $headers = "From: $from\r\nReply-to: $from\r\nContent-type:text/plain; charset=utf-8\r\n";
    17.                         mail($to, $tema, $message, $headers);
    18.                  }
     
  16. Алексей87К

    Алексей87К Новичок

    С нами с:
    5 янв 2017
    Сообщения:
    157
    Симпатии:
    4
    Результат, после отправки: array(0) { }
     
  17. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    Мне по роду деятельности положено во все темы заглядывать, но это вовсе не означает, что я обязан за всеми следить и во всех участвовать. И уж тем более ничего не должен лично тебе. Мб тебе и кажется обратное, но мир работает чуток иначе.
    Это очень важный навык, уметь перечеркнуть сделанное, вместо того, чтобы жалеть себя. И ответ не в одну строчку. Залезь внутрь мэйлера, погляди туда. И посмотри на свой код. Суть в том, что, чтобы твоя почтовая система, в итоге, заработала со всеми почтовиками, выдерживала все стандарты и не была дырой в безопасности, тебе нужно будет...а написать свой собственный мейлер. На что у тебя едва ли хватит опыта, будем реалистами. Не, ради академического интереса - вперед, дерзай. Я вот тоже любитель попилить велосипеды для атомарных библиотек. Скилла ради. Но только когда уверен на 100%, что могу сделать лучше. И только после оценки исходника. Но наша с тобой разница в том, что я уже давно перевалил во третью фазу синдрома Даннинга Крюггера, когда оценка собственных сил и навыков более менее коррелирует с их реальным уровнем, а ты еще в первой. Это нормально, но с этим нужно считаться. Это нужно принять. Хорошая новость - это проходит, со временем. Почти у всех.

    Или ты думаешь, что ни у кого такого не было, что сидишь, сидишь, пилишь что-то, а потом выделяешь и удаляешь нахрен, потому что понимаешь, что делаешь что-то не то? Ты будешь удивлен.
    Кучу времени ты тратишь на жаление самого себя. Это очевидно, но я тоже никогда не имел дела с мейлером до того момента, когда первый раз с ним столкнулся. Я потратил где-то час на то, чтобы с ним разобраться, и где-то полдня на то, чтобы почтовый сервер соответствовал хотя бы минимальным требованиям, при которых письма не начинают валиться в спам или, что хуже, тупо игнорироваться тем же gmail-ом.
    Я делал это первый раз в жизни. А знаешь, почему у меня все получилось? Потому что я не ныл, а искал инфу, читал документацию, изучал примеры.
    Ни в каком. Никак. Рано тебе заниматься почтой. Тебе нужно основы PHP выучить, чтобы подобных вопросов не возникало.
    Начни с "require". Это не стеб. Просто ты реально пытаешься заниматься тем, чего не понимаешь. Тыкаться наобум, вслепую во что-то, что требует точность, это все равно что решать дифференциальное уравнение на удачу. Нет, так не получится. Ты либо понимаешь, что делаешь, либо нет. Учи основы.
     
  18. Алексей87К

    Алексей87К Новичок

    С нами с:
    5 янв 2017
    Сообщения:
    157
    Симпатии:
    4
    Я прошёл то время, когда я старательно изучал php, решая мелкие задачи просто так, чтобы выучить язык. И что такое require я знаю и всё равно у меня как у любого нормально человека возникает вопрос, как это всё будет связано. Поскольку если это не получиться связать, то весь код, который будет написан, можно будет выбросить в мусор. Работать ничего не будет. Мне нужна сначала четко понять, как код библиотеки phpMailer связать формой. И что делать с ajax кодом, который тоже подвязан на форму? Он будет работать? Ответьте на эти вопросы! P.S. А это действительно самая понятная и лучшая система по отправки почты, или есть другие?
    Если бы ты потратил столько времени на те разные вопросы, которые были связаны у меня формой, то я бы ещё посмотрел, без обид, кто из нас бы ныл! А я не ною!!! И всё равно тщательно капаю, ищя ответ на свой вопрос... Просто легкое отчаяние от того, что столько времени потрачено. И от того, что очень и очень часто на форумах не могут сформулировать четкий ответ на поставленный вопрос! Если бы я помогал, то после меня человек никуда не обращался! Потому что я подхожу к таким делам серьёзно! Не лишь бы ответить!
    Прошу мне дать понятную инфу по инструкции пользования phpMailer.
    И прошу всё таки ответить на вопрос... Я сделал проверку: var_dump(); Результат: array(0) { } Что это значит? Как мне добиться отправки значений методом POST?

    И ещё... Мне важно, чтобы это сейчас работало, Хоть как-то, но работало. Мне проект сдавать! А потом конечно, я начну осваивать phpMailer, если он такой хороший, как вы говорите. Но сейчас, мне осталось чуть-чуть. Понять, что происходит? Почему данные не передаются методом POST! А в phpmailer слишком много наворотов, которые мне на фиг не нужны. Вот к примеру, как настроить config.php и класс так, чтобы человек просто вбив своё имя, почту, skype(необязательно) и сообщение, нажав кнопку "Отправить" передал мне эти данные на определённый почтовый адрес (на один) Это всё, что мне нужно!
     
    #18 Алексей87К, 22 окт 2017
    Последнее редактирование: 23 окт 2017
  19. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.743
    Симпатии:
    1.319
    Адрес:
    Лень
    датыдбае!!!
    Google.ru
     
  20. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    Взимоисключающие параграфы. Ты либо знаешь, как многофайловые проекты делаются и понимаешь, как работает это все, либо нет и у тебя есть вопросы. Определись.
    Нет, не прошел. Как я и говорил, Даннинг Крюгер, первая стадия. Борись с ней.
    --- Добавлено ---
    1) Как и любой другой код на PHP.
    2) Да, разумеется.
    --- Добавлено ---
    Возвращаемся к пункту 1 - изучай азы. Мне больше нечего сказать.
    --- Добавлено ---
    А как ты его брал, не зная, как классы объявляются?
    Не зная как конфигурационный файл цеплять?
    Не умея читать мануалы?
    Не умея отправлять формы?
    А оплатой за проект ты со мной поделишься?
    А что ты дальше делать будешь, когда у тебя что-то посложнее почтовой системы спросят?

    Ты, парень, сам себя в этот угол загнал, ейбогу.

    Я вот, свой первый проект взял лишь спустя почти 4 года после того, как начал изучать PHP (php, а не программирование как таковое, программированием я до этого занимался на других языках еще, плюс-минус лет 9, включая всякие бейсики). Ну...точнее веб. php+js+css3+html5.

    Именно вот проект. От начала до конца.
    То есть вот только тогда, когда на вопрос "А ты сможешь сделать %нужное_вписать%", я смог давать уверенный ответ "Я могу сделать что угодно, если это технически реализуемо". И, порой офигеваю от того, как люди на форуме пишут в своих резюме "выполню работу любой сложности", а потом просят помочь принять POST-запросы. Сюрреализм какой-то.

    И я уж точно не скажу никогда, что "прошло то время, когда я учился, и теперь я папка". Не прошло. Я каждый день учусь. Я никогда не скажу, что "я знаю %нужное_вписать% в совершенстве". Да хрен-то там.
     
  21. Алексей87К

    Алексей87К Новичок

    С нами с:
    5 янв 2017
    Сообщения:
    157
    Симпатии:
    4
    И что это за стадия?
    И ещё раз, Почему не отправляются данные на почту, в чём причина?
    Так блин, ты можешь хотя бы дать мне направляющие вопросы? Ответив на которые, я пришёл бы к ответу?
     
  22. yurri_87

    yurri_87 Новичок

    С нами с:
    29 авг 2017
    Сообщения:
    37
    Симпатии:
    5
    не читал остальные комментарии, но я думаю что это угрозы. Это то же самое, когда ты берешь трубку, а на той стороне молчание.
    [​IMG]
     
  23. Алексей87К

    Алексей87К Новичок

    С нами с:
    5 янв 2017
    Сообщения:
    157
    Симпатии:
    4
    Так я же не писал "Я всё могу" И что ты предлагаешь, вообще не браться за проект? А как тогда учиться, не подскажешь???
    --- Добавлено ---
    Я не знал, что здесь обязательно нужно ООП
    Знаю!
    Что конкретно ты под эти подразумеваешь? Если документацию, то я читаю! Не всё понимаю, но читаю!
    Умею отправлять формы! Ошибка же не в коде!
    --- Добавлено ---
    Я не знал, что здесь обязательно нужно ООП
    Знаю!
    Что конкретно ты под эти подразумеваешь? Если документацию, то я читаю! Не всё понимаю, но читаю!
    Посоветуй, раз у тебя такой опыт! Как ты учишь язык программирование. Только не говори что с документации. Для новичков документация, это тёмный лес!
     
  24. yurri_87

    yurri_87 Новичок

    С нами с:
    29 авг 2017
    Сообщения:
    37
    Симпатии:
    5
    Котеров PHP7 в подленнике,
    Мэтт Зандстра - php, шаблоны
    и после этого Гугл для тебя будет в разы мощнее, чем был раньше

    1500 страниц в итоге, но блин, помоему без этого никак. Первая книга подготовит тебя ко второй, а вторая позволит понимать хорошо ООП и легче разбираться в современном программировании.

    Чтобы меньше уходило времени на мелкие вопросы - хватит и первой книги.
     
    #24 yurri_87, 23 окт 2017
    Последнее редактирование: 23 окт 2017
    Алексей87К нравится это.
  25. Алексей87К

    Алексей87К Новичок

    С нами с:
    5 янв 2017
    Сообщения:
    157
    Симпатии:
    4
    Я не знал, что здесь обязательно нужно ООП
    Знаю!
    Что конкретно ты под эти подразумеваешь? Если документацию, то я читаю! Не всё понимаю, но читаю!
    Посоветуй, раз такое
    Большое спасибо!!!! Я обязательно их найду и начну изучать!!!