За последние 24 часа нас посетили 20686 программистов и 1110 роботов. Сейчас ищут 350 программистов ...

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

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

  1. yurri_87

    yurri_87 Новичок

    С нами с:
    29 авг 2017
    Сообщения:
    37
    Симпатии:
    5
    я такой же новичек как и ты и часто задаю глупые вопросы. Но успел понять важность методичного изучения с самых азов, поскольку часто возвращаюсь к основам. Вот сейчас решил перечитать Котерова, поскольку раньше читал "php5 в подленнике" на скорую руку. По сути там все просто, даже ООП, просто дело именно в методичном изучении от простого к сложному. Короче Котеров даст полное знание основ. А Мэтт Зандстра - хорошо объясняет паттерны, которые хорошо описаны и в других книгах, однако мало книг на русском. А те что на русском - в одной паттерны объясняются на примере java, в другой не так поступательно и методично, как у Мэта Зандстры. А у него именно поступательно. Сначала освежает основные постулаты ООП, потом объясняет что такое UML-диаграммы, потом говорит об основных принципах ООП программирования, и уже после этого идут паттерны, примеры которых написаны на php. Короче на фоне других хорошая книжка. Кстати в этой же книге освещаются всякие способы подключения файлов/классов.

    Знать ООП - это обязательно, без этого сложно.
    Зачем нужно понимать паттерны - чтобы быть нормальным/хорошим программистом.

    Что касается мейлера - я вообще не понимаю ниче, но почитав тему понял что проблема как раз в знании основ. Без мейлера походу легко сделать, у тебя там какая-то маленькая трабла с получением данных.

    что у тебя там с аяксом? выложи ВЕСЬ код. Может быть при отправке не указал method: 'POST' ?
    Короче скорее всего что-то с ajax. Попробуй сделать не $name = $_POST['name'] и все остальные переменные, а $name = 'Евгений'. Заполни вручную, если письмо отправится, то значит дело в передаче POST-данных, как ты их отправляешь - надо выложить весь код, включая js и ajax
     
    #26 yurri_87, 23 окт 2017
    Последнее редактирование: 23 окт 2017
    romach, Fell-x27 и Алексей87К нравится это.
  2. Алексей87К

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

    С нами с:
    5 янв 2017
    Сообщения:
    157
    Симпатии:
    4
    Я же нашёл и скачал эти книги... Моя проблема наверное в том, что у меня нет определённой методике в изучении материала. Я стараюсь, конечно что-то записывать, но методика восприятия информации, конечно нужна! У тебя наверное своя! У каждого своя) Что касается вопроса, то он следующий. Проанализировал отправку формы var_dump() Он показал, что ничего не отправляется методом $_POST Вопрос: Если исходить из того, что с кодом всё в порядке, то что может быть?
     
  3. yurri_87

    yurri_87 Новичок

    С нами с:
    29 авг 2017
    Сообщения:
    37
    Симпатии:
    5
    В том как ты передаешь POST данные. Как ты их передаешь?
    У тебя есть форма. Как ты берешь из нее данные и передаешь php-скрипту?
    напиши код.
    А, мне почему-то показалось что я где-то про ajax прочитал, походу ошибся. У тебя напрямую да? На глазок вроде все пучком. Как мог потеряться POST хз ваще.
    Поля формы вручную заполняешь, или надеешься что они откуда-то появятся из за "value=<? $POST_.... ?
     
    #28 yurri_87, 23 окт 2017
    Последнее редактирование: 23 окт 2017
  4. Алексей87К

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

    С нами с:
    5 янв 2017
    Сообщения:
    157
    Симпатии:
    4
    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.  
    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.                  }
    19. var_dump($_POST);
    PHP:
    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" name="submit">Оставьте заявку</button>
    14.                      </div>
    15.                  </form>
    16.  
    17.               </div>
    18.             </div>
    А код ajax мне нужен для того, чтобы перезагрузки страницы не было. Не думаю, что из-за него что-то
    Код (Text):
    1. $(document).ready(function () {
    2.     $(document).on('click','#sbm', function(e){
    3.         e.preventDefault();
    4.         var sub = true;
    5.         if($('#name').val()==""){$('#name').css( "border"," solid 1px red" ); sub=false;}
    6.         if($('#email').val()==""){$('#email').css( "border"," solid 1px red" ); sub=false;}
    7.         if(sub){
    8.             $.ajax({
    9.                 type: "POST",
    10.                 url: "form.php",
    11.                 data: $(this).serialize()
    12.             }).done(function(data) { //в data вернется ответ сервера, например можно вывести ошибки
    13.                 alert('Спасибо');          
    14.                 location.reload();
    15.                 $('#form').hide();          
    16.             });
    17.         }
    18.         return false;
    19.     });
    20. });
    До того, как я поставил условие if, мне приходило на почту следующее:
    mail.png
    а сейчас вообще ничего. var_dump($_POST) = array(0) { }
    --- Добавлено ---
    Поля формы заполняю, но на почте их нет
     
  5. yurri_87

    yurri_87 Новичок

    С нами с:
    29 авг 2017
    Сообщения:
    37
    Симпатии:
    5
    без ajax пробовал напрямую?
    потому что данные для отправки аяксом ты походу неправильно получаешь.
    что по твоему значит data: $(this).serialize() ?
    что возвращает $(this) ?
    он возвращает тебе объект кнопки сабмит, которую ты за тем хочешь сериализовать ). А надо сериализовать форму:
    Код (Text):
    1. data: $('#идентификатор формы').serialize()
    суть проблемы в том, что $this возвращает элемент для события click, как ты указал в самом начале: $(document).on('click','#sbm', function(e){ ... и это, там парабам... КНОПКА!
     
    #30 yurri_87, 23 окт 2017
    Последнее редактирование: 23 окт 2017
  6. Алексей87К

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

    С нами с:
    5 янв 2017
    Сообщения:
    157
    Симпатии:
    4
    я не могу это объяснить... Я убрал весь код ajax, а форма всё равно работает с ним. Почему??? .... А что нужно прописать, чтобы данные отправлялись нормально?
     
  7. yurri_87

    yurri_87 Новичок

    С нами с:
    29 авг 2017
    Сообщения:
    37
    Симпатии:
    5
    ничего особого, у тебя уже есть
    Код (Text):
    1. <form id="form" method="post" action="form.php" ...
    и
    Код (Text):
    1. <button type="submit" ...
    этого уже достаточно чтобы отправить данные скрипту "form.php".
    Незнаю, влияет ли это, но убери весь js код, начиная от
    Код (Text):
    1. $(document).on('click','#sbm'
    и все должно быть норм.
    В таком виде все должно работать, если ошибка заключалась именно в том что я выше описал. Если данные начнут отправляться, то верни ajax-запрос и просто подкорректируй его
    --- Добавлено ---
    ну походу кэш браузера нужно тебе почистить. Если у тебя Chrome - нажми ctrl+shift+del, галочка очистки кэша должна стоять, нажми очистить. А лучше для дальнейшей работы отключи кэш в developer tools (погугли)
    --- Добавлено ---
    а кому делаешь? что за проект? на фрилансе заказ взял?
     
    Алексей87К нравится это.
  8. Алексей87К

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

    С нами с:
    5 янв 2017
    Сообщения:
    157
    Симпатии:
    4
    Вы правы! Всё получилось, как только я удалил ajax... А ... можете помочь сделать так, чтобы с ajax работало? ... Для одноклассника делаю!
     
  9. yurri_87

    yurri_87 Новичок

    С нами с:
    29 авг 2017
    Сообщения:
    37
    Симпатии:
    5
    ок могу, зачем на Вы, я такой же распиздяй как и ты скорее всего.
    ты походу не понял что я там тебе писал про $this.
    но тогда просто замени
    Код (Text):
    1. data: $(this).serialize()
    на
    Код (Text):
    1. data: $('#form').serialize()
    а что за сайт/проект? что за консультация? какие услуги? интересно.
    будет готов - кинь ссылочку, впринципе мне интересны всякие стартапы, сам щас кое-что мучу.
    --- Добавлено ---
    да, и я пробежался маленько взглядом по твоим другим темам, походу все подобные value="<?=$_POST... в твоей форме - они тебе вообще не нужны, убери value.
     
  10. Алексей87К

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

    С нами с:
    5 янв 2017
    Сообщения:
    157
    Симпатии:
    4
    К сожалению не сработало... Без ajax - работает, с ним нет! Ссылку скину, конечно) ... Почему же может не работать? Я сделал, как ты мне и сказал
    --- Добавлено ---
    у меня две формы и два ajax

    Код (Text):
    1. $(document).ready(function () {
    2.     $(document).on('click','#sbm', function(e){
    3.         e.preventDefault();
    4.         var sub = true;  
    5.         if($('#name').val()==""){$('#name').css( "border"," solid 1px red" ); sub=false;}
    6.         if($('#email').val()==""){$('#email').css( "border"," solid 1px red" ); sub=false;}
    7.         if(sub){
    8.             $.ajax({
    9.                 type: "POST",
    10.                 url: "form.php",
    11.                 data: $('#form').serialize()
    12.             }).done(function(data) { //в data вернется ответ сервера, например можно вывести ошибки
    13.                 alert('Спасибо');            
    14.                 location.reload();
    15.                 $('#form').hide();            
    16.             });
    17.         }
    18.         return false;
    19.     });
    20. });
    21.  
    22.  
    23.   $(document).ready(function () {
    24.     $(document).on('click','#sbmmain', function(e){
    25.         e.preventDefault();
    26.         var sub = true;
    27.         if($('#title').val()==""){$('#title').css( "border"," solid 1px red" ); sub=false;}
    28.         if($('#mail').val()==""){$('#mail').css( "border"," solid 1px red" ); sub=false;}
    29.         if(sub){
    30.             $.ajax({
    31.                 type: "POST",
    32.                 url: "form.php",
    33.                 data: $('#mainform').serialize()
    34.             }).done(function(data) { //в data вернется ответ сервера, например можно вывести ошибки
    35.                 alert('Спасибо');          
    36.                 $('input').val('');
    37.             });
    38.         }
    39.         return false;
    40.     });
    41. });
    Вот вторая форма...
    HTML:
    1. <div class="contact">
    2.             <div class="wrapper">
    3.                  <div class="contact-title" id="about">Оставьте заявку сейчас и получите бесплатную консультацию!</div>
    4.                  <form id="mainform" method="post" action="form.php">
    5.                      <input type="text" placeholder="Ваше имя" id="title" name="name"  value="<?=$_POST['name'] ?? '' ?>" />
    6.  
    7.                      <input type="email" placeholder="Ваша почта" id="mail" name="email" value="<?=$_POST['email'] ?? '' ?>" />
    8.  
    9.                      <input type="text" placeholder="Ваш Skype"  name="skype" value="<?=$_POST['skype'] ?? '' ?>" />
    10.                      <textarea name="sms" cols="30" rows="10" placeholder="Ваше сообщение" value="<?=$_POST['sms'] ?? '' ?>" ></textarea>
    11.  
    12.                      <div>
    13.                         <button type="submit" id="sbmmain" name="submit">Оставить заявку</button>
    14.                      </div>
    15.                  </form>
    16.               </div>
    17.          </div>
     
  11. yurri_87

    yurri_87 Новичок

    С нами с:
    29 авг 2017
    Сообщения:
    37
    Симпатии:
    5
    незнаю, должно работать, $_POST распечатывал? попробуй из <button type="submit"... убрать type="submit". Сделай допустим вместо нее <div id="submit">Отправить</div>. Попробуй также распечатать в js
    Код (Text):
    1. $(document).ready(function () {
    2.     $(document).on('click','#sbmmain', function(e){
    3.         alert($('#mainform').serialize());
    возможно e.preventdefault() мешает, попробуй удалить его.
     
  12. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.989
    Симпатии:
    759
    лалка палка, у тебя массив пустой приходит. Разбирайся, почему.
    --- Добавлено ---
    код писать надо постепенно и проверять на каждом этапе. А не написать портянку и ломать голову что не работает.
     
  13. Каменьвогород

    С нами с:
    19 окт 2017
    Сообщения:
    12
    Симпатии:
    1
    HTML:
    1. <div class="contact">
    2.     <div class="wrapper">
    3.         <div class="contact-title" id="about">Оставьте заявку сейчас и получите бесплатную консультацию!</div>
    4.         <form id="mainform">
    5.  
    6.             <input type="text" name="name" value="" placeholder="Ваше имя" />
    7.             <input type="email" name="email" value="" placeholder="Ваша почта" />
    8.             <input type="text" name="skype" value="" placeholder="Ваш Skype"  />
    9.             <textarea name="sms" cols="30" rows="10" value="" placeholder="Ваше сообщение"></textarea>
    10.  
    11.             <div>
    12.                 <button type="submit">Оставить заявку</button>
    13.             </div>
    14.  
    15.         </form>
    16.  
    17.     </div>
    18. </div>
    Код (Javascript):
    1. var mainForm;
    2.  
    3.     mainForm = $("#mainform");
    4.  
    5.     mainForm.on("submit", function(event) {
    6.  
    7.         event.preventDefault();
    8.  
    9.         var sub, curField;
    10.  
    11.         sub = true;
    12.  
    13.         for(var i = 0; i < $(this)[0].length; i++) {
    14.  
    15.             curField = $($(this)[0][i]);
    16.  
    17.             if((curField.attr("name") == 'name' || curField.attr("name") == 'email') && curField.val() == '') {
    18.                 curField.css("border","solid 1px red");
    19.                 sub = false;
    20.             }
    21.  
    22.         }
    23.  
    24.         if(sub){
    25.             $.ajax({
    26.                 type: "POST",
    27.                 url: "ajax/form.php",
    28.                 data: $(this).serialize(),
    29.                 success: function(response) {
    30.                     alert(response);
    31.                 }
    32.             });
    33.         }
    34.      
    35.     });
     
  14. Алексей87К

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

    С нами с:
    5 янв 2017
    Сообщения:
    157
    Симпатии:
    4
    dob.png dob.png
    у меня две формы и два ajax

    Код (Text):
    1. $(document).ready(function () {
    2.     $(document).on('click','#sbm', function(e){
    3.         e.preventDefault();
    4.         var sub = true;
    5.         if($('#name').val()==""){$('#name').css( "border"," solid 1px red" ); sub=false;}
    6.         if($('#email').val()==""){$('#email').css( "border"," solid 1px red" ); sub=false;}
    7.         if(sub){
    8.             $.ajax({
    9.                 type: "POST",
    10.                 url: "form.php",
    11.                 data: $('#form').serialize()
    12.             }).done(function(data) { //в data вернется ответ сервера, например можно вывести ошибки
    13.                 alert('Спасибо');          
    14.                 location.reload();
    15.                 $('#form').hide();        
    16.             });
    17.         }
    18.         return false;
    19.     });
    20. });
    21.  
    22.  
    23.   $(document).ready(function () {
    24.     $(document).on('click','#sbmmain', function(e){
    25.         e.preventDefault();
    26.         var sub = true;
    27.         if($('#title').val()==""){$('#title').css( "border"," solid 1px red" ); sub=false;}
    28.         if($('#mail').val()==""){$('#mail').css( "border"," solid 1px red" ); sub=false;}
    29.         if(sub){
    30.             $.ajax({
    31.                 type: "POST",
    32.                 url: "form.php",
    33.                 data: $('#mainform').serialize()
    34.             }).done(function(data) { //в data вернется ответ сервера, например можно вывести ошибки
    35.                 alert('Спасибо');      
    36.                 $('input').val('');
    37.             });
    38.         }
    39.         return false;
    40.     });
    41. });
    Привет! Я изменил на то, что ты прописал. Результат: У кнопки пропали стили. В css я конечно зашёл, и прописал вместо button который я удалил, #id (взависимости от формы) Но к сожалению пока так. Далее, касаемо js ... Я удалил e.preventdefault и написал alert($('#form').serialize()); и как результат:
    dob.png
    но var_dump($_POST) по прежнему пишет, что массив пустой... значит, проблема ниже...
     
  15. yurri_87

    yurri_87 Новичок

    С нами с:
    29 авг 2017
    Сообщения:
    37
    Симпатии:
    5
    каким макаром ты узнаешь что выдает var_dump($_POST)? не вижу чтобы ajax выводил что-нибудь.
    как нибудь так сделай:
    Код (Text):
    1. done(function(data) {
    2.                 alert(data);
    а в php скрипте сделай что нибудь вроде
    PHP:
    1. echo $_POST['name']
    кароч хз в чем дело, морока сплошная.
    попробуй просто руками передать данные:
    Код (Javascript):
    1. data: {
    2. name : 'вася',
    3. lastname : 'пупкин'
    4. }
    проделай то же самое в php:
    PHP:
    1. echo $_POST['name'];
    2. echo $_POST['lastname'];