Здравствуйте! Подскажите пожалуйста, что здесь не так? PHP: $to = 'a.site@gmail.com'; $name = strip_tags(trim($_POST['name'])); $email = strip_tags(trim($_POST['email'])); $skype = strip_tags(trim($_POST['skype'])); $sms = strip_tags(trim($_POST['sms'])); $message = "Имя пользователя: ".$name."\r\n"; $message .= "Почта: ".$email."\r\n"; $message .= "Skype: ".$skype."\r\n"; $message .= "Сообщение: ".$sms."\r\n"; $tema = "=?utf-8?B?".base64_encode($subject)."?="; $headers = "From: $from\r\nReply-to: $from\r\nContent-type:text/plain; charset=utf-8\r\n"; mail($to, $tema, $message, $headers); HTML: <div class="popupcontact"> <div class="wrapper"> <div class="popupcontacttitle" id="about">Оставьте заявку сейчас и получите бесплатную консультацию!</div> <form id="form" method="post" action="form.php" class="popupform"> <input type="text" placeholder="Ваше имя" id="name" name="name" value="<?=$_POST['name'] ?? '' ?>" /> <input type="email" placeholder="Ваша почта" id="email" name="email" value="<?=$_POST['email'] ?? '' ?>" /> <input type="text" placeholder="Ваш Skype" name="skype" value="<?=$_POST['skype'] ?? '' ?>" /> <textarea name="sms" cols="5" rows="10" placeholder="Ваше сообщение" value="<?=$_POST['sms'] ?? '' ?>" ></textarea> <div> <button type="submit" id="sbm">Оставьте заявку</button> </div> </form> </div> </div> а на почту получаю:
Хммм..... Наверное потому что кто-то отправляет пустую форму или напрямую дергает form.php (проверки request method'а же нет, да?)
Нет, это я отправляю почту на данный момент) ... я ввёл для эксперемента if (isset($_POST['submit'])) {} Так уменя вообще ничего не отправилось. Может ли это быть из-за хостинга? Может они его отключают? Я уже не знаю, как проверить. Подскажите способы проверок!
Затем, что юзай тот же phpMailer и не парься ни о чем. Отправка email не такая простая вещь, как кажется. Там хренова туча стандартов и уязвимостей протокола и прочих тонкостей. Это вот тот случай, когда действительно лучше юзать готовое отполированное решение, чем пытаться костылить свое. Конечно, знать, как это все работает - нужно. И, в случае чего, уметь написать свой мэйлер тоже полезный навык. Но когда надо на продакшене развернуть почтовый модуль для сайта, пусть лучше его сердцем будет проверенное решение.
А вы уверены, что ключ 'submit' вообще есть в массиве $_POST? Я вот смотрю на ваш код и мне почему-то кажется, что его там нет.
очевидно, что введенные данные не доходят. Пройдись по цепочке и всё проверь. --- Добавлено --- Вот инструкция по phpMailer. Правда, три года ей, и код в примере написан в старом стиле. Но работать будет.
а как правильно? --- Добавлено --- Конечно, при добавлении условия, я добавил в форму name="submit" PHP: <button type="submit" id="sbmmain" name="submit">Оставить заявку</button> --- Добавлено --- Конечно, при добавлении условия, я добавил в форму name= Я слишком долго возился с этими ошибками, исправлял. И сейчас вы предлагаете всё зачеркнуть и начать всё заново с какого-то phpMailer, который опять таки, неизвестно, если сработает? Почему вы раньше этого не посоветовали? К примеру, несколько дней назад!? --- Добавлено --- "Создаем класс, расширяющий PHPMailer" ... Даже не указанно, в каком файле это всё создавать?
В следующий раз проси готовое решение, не возможно всегда идеально отвечать https://secure.php.net/manual/ru/language.oop5.inheritance.php
Синдром игрока - вредное искажение восприятия. Молодец, что потратил на это время и силы. Это бесценный опыт, который тебе не раз пригодится. Но цепляться за что-то только потому, что "я же делал..." не правильно. Слво "какой-то" в отношении phpMailer применимо так же, как "программирование на каком-то языке" или "сервер на каком-то линуксе". Без обид, но "какое-то" это про твое решение, а phpMailer, наряду со свифтом - библиотеки, входящие в "золотой стандарт", так сказать. То, что какой-то начинающий разработчик и оних не слышал и даже не пытался искать инфу о решениях в этой сфере, никак не меняет вышеописанные факты. А должен был? Что еще я обязан сделать? А может, я должен в будущее заглянуть и все твои проблемы заренее решить? Сожалею, но я так не умею. У меня есть ряд физических ограничений, не позволяющих перемещаться во времени. Действительно, в каком? Быть может...в любом, каком захочешь? Тебе же нужно просто класс запилить. Ты это можешь сделать как и где угодно. Речь идет о простом ООП. Не усложняй простые вещи Выключай истерику, включая рационализм. Профессия обязывает.
потому, что это очевидно. создаешь где хочешь, называешь как хочешь. всем похер, на самом деле. делай как хош. не доволен еще.
"Создаем класс, расширяющий PHPMailer" ... Даже не указанно, в каком файле это всё создавать? Речь не о том, что должен был, а о том, что ты в моих темах сидишь уже давно. Я их много создавал и мы долго беседовали над моими ошибками. И теперь, когда я уже в конце пути и мне нужно всего лишь добить вопрос, почему не возвращается данные на почту и ответ может быть в одну строчку, вы предлагаете мне развернуться назад, уничтожив всё то затраченное время? Неужели не понимаете, что это как минимум странно? Тем более, я никогда не имел дело с phpMailer, что означает, что я потрачу ещё кучу времени на код! --- Добавлено --- И это было разве к вам обращено? Чтобы вы так на вопросы отвечали, как придираетесь, тогда ответ был бы у меня ещё несколько дней назад! Зачем разводить пустую болтовню и тратить время на острословие? Может делом займёмся? --- Добавлено --- Так в каком файле? Мне что, просто создать любой файл и скопировать код??? А дальше что!? Как он будет привязан к config.php? И как связать это потом с формами?
Зю: и тут приходит ангел с небес под фоновую музыку АААААААААААААААААААААААААААААА PHP: if ( $_SERVER['REQUEST_METHOD'] === 'POST' ) { $ARGS = [ 'name' => FILTER_SANITIZE_FULL_SPECIAL_CHARS, 'email' => FILTER_VALIDATE_EMAIL, 'skype' => [ 'filter' => FILTER_VALIDATE_REGEXP, 'options' => [ 'regexp' => '/^[a-zA-Z0-9]{1,}$/' ] ], 'sms' => FILTER_SANITIZE_FULL_SPECIAL_CHARS ]; $INPUTS = filter_input_array ( INPUT_POST, $ARGS ); $E = []; if ( in_array ( NULL, $INPUTS, TRUE ) ) { $E[] = 'Undefined inputs :('; } else { if ( !$INPUTS['email'] ) { $E[] = 'Мыло не варик'; } if ( !$INPUTS['skype'] ) { $E[] = 'Скайп бомжовский'; } if ( empty ( $INPUTS['sms'] ) ) { $E[] = 'Текста ноль'; } } if ( empty ( $E ) ) { exit ( implode ( '<br>', $E ) ); } # PHPMailer class... /* ... */ } https://php.ru/forum/threads/48871/#post-396315 https://github.com/PHPMailer --- Добавлено ---
Так в каком файле? Мне что, просто создать любой файл и скопирова Вообще ничего не показало... Почему? И ещё... Если раньше, до того как я поставил проверку if мне ещё что-то приходило на почту, пусть и пустое письмо, то сейчас, вообще ничего не приходит... Может это информация что-то скажет... PHP: error_reporting(E_ALL); $to = 'a.kovalkovsky@gmail.com'; if (isset($_POST['submit'])) { if(!empty($_POST['name'])){$name = strip_tags(trim($_POST['name']));} if(!empty($_POST['email'])){$email = strip_tags(trim($_POST['email']));} if(!empty($_POST['skype'])){$skype = strip_tags(trim($_POST['skype']));} if(!empty($_POST['sms'])){$sms = strip_tags(trim($_POST['sms']));} $message = "Имя пользователя: ".$name."\r\n"; $message .= "Почта: ".$email."\r\n"; $message .= "Skype: ".$skype."\r\n"; $message .= "Сообщение: ".$sms."\r\n"; var_dump($_POST); $tema = "=?utf-8?B?".base64_encode($subject)."?="; $headers = "From: $from\r\nReply-to: $from\r\nContent-type:text/plain; charset=utf-8\r\n"; mail($to, $tema, $message, $headers); }
Мне по роду деятельности положено во все темы заглядывать, но это вовсе не означает, что я обязан за всеми следить и во всех участвовать. И уж тем более ничего не должен лично тебе. Мб тебе и кажется обратное, но мир работает чуток иначе. Это очень важный навык, уметь перечеркнуть сделанное, вместо того, чтобы жалеть себя. И ответ не в одну строчку. Залезь внутрь мэйлера, погляди туда. И посмотри на свой код. Суть в том, что, чтобы твоя почтовая система, в итоге, заработала со всеми почтовиками, выдерживала все стандарты и не была дырой в безопасности, тебе нужно будет...а написать свой собственный мейлер. На что у тебя едва ли хватит опыта, будем реалистами. Не, ради академического интереса - вперед, дерзай. Я вот тоже любитель попилить велосипеды для атомарных библиотек. Скилла ради. Но только когда уверен на 100%, что могу сделать лучше. И только после оценки исходника. Но наша с тобой разница в том, что я уже давно перевалил во третью фазу синдрома Даннинга Крюггера, когда оценка собственных сил и навыков более менее коррелирует с их реальным уровнем, а ты еще в первой. Это нормально, но с этим нужно считаться. Это нужно принять. Хорошая новость - это проходит, со временем. Почти у всех. Или ты думаешь, что ни у кого такого не было, что сидишь, сидишь, пилишь что-то, а потом выделяешь и удаляешь нахрен, потому что понимаешь, что делаешь что-то не то? Ты будешь удивлен. Кучу времени ты тратишь на жаление самого себя. Это очевидно, но я тоже никогда не имел дела с мейлером до того момента, когда первый раз с ним столкнулся. Я потратил где-то час на то, чтобы с ним разобраться, и где-то полдня на то, чтобы почтовый сервер соответствовал хотя бы минимальным требованиям, при которых письма не начинают валиться в спам или, что хуже, тупо игнорироваться тем же gmail-ом. Я делал это первый раз в жизни. А знаешь, почему у меня все получилось? Потому что я не ныл, а искал инфу, читал документацию, изучал примеры. Ни в каком. Никак. Рано тебе заниматься почтой. Тебе нужно основы PHP выучить, чтобы подобных вопросов не возникало. Начни с "require". Это не стеб. Просто ты реально пытаешься заниматься тем, чего не понимаешь. Тыкаться наобум, вслепую во что-то, что требует точность, это все равно что решать дифференциальное уравнение на удачу. Нет, так не получится. Ты либо понимаешь, что делаешь, либо нет. Учи основы.
Я прошёл то время, когда я старательно изучал php, решая мелкие задачи просто так, чтобы выучить язык. И что такое require я знаю и всё равно у меня как у любого нормально человека возникает вопрос, как это всё будет связано. Поскольку если это не получиться связать, то весь код, который будет написан, можно будет выбросить в мусор. Работать ничего не будет. Мне нужна сначала четко понять, как код библиотеки phpMailer связать формой. И что делать с ajax кодом, который тоже подвязан на форму? Он будет работать? Ответьте на эти вопросы! P.S. А это действительно самая понятная и лучшая система по отправки почты, или есть другие? Если бы ты потратил столько времени на те разные вопросы, которые были связаны у меня формой, то я бы ещё посмотрел, без обид, кто из нас бы ныл! А я не ною!!! И всё равно тщательно капаю, ищя ответ на свой вопрос... Просто легкое отчаяние от того, что столько времени потрачено. И от того, что очень и очень часто на форумах не могут сформулировать четкий ответ на поставленный вопрос! Если бы я помогал, то после меня человек никуда не обращался! Потому что я подхожу к таким делам серьёзно! Не лишь бы ответить! Прошу мне дать понятную инфу по инструкции пользования phpMailer. И прошу всё таки ответить на вопрос... Я сделал проверку: var_dump(); Результат: array(0) { } Что это значит? Как мне добиться отправки значений методом POST? И ещё... Мне важно, чтобы это сейчас работало, Хоть как-то, но работало. Мне проект сдавать! А потом конечно, я начну осваивать phpMailer, если он такой хороший, как вы говорите. Но сейчас, мне осталось чуть-чуть. Понять, что происходит? Почему данные не передаются методом POST! А в phpmailer слишком много наворотов, которые мне на фиг не нужны. Вот к примеру, как настроить config.php и класс так, чтобы человек просто вбив своё имя, почту, skype(необязательно) и сообщение, нажав кнопку "Отправить" передал мне эти данные на определённый почтовый адрес (на один) Это всё, что мне нужно!
Взимоисключающие параграфы. Ты либо знаешь, как многофайловые проекты делаются и понимаешь, как работает это все, либо нет и у тебя есть вопросы. Определись. Нет, не прошел. Как я и говорил, Даннинг Крюгер, первая стадия. Борись с ней. --- Добавлено --- 1) Как и любой другой код на PHP. 2) Да, разумеется. --- Добавлено --- Возвращаемся к пункту 1 - изучай азы. Мне больше нечего сказать. --- Добавлено --- А как ты его брал, не зная, как классы объявляются? Не зная как конфигурационный файл цеплять? Не умея читать мануалы? Не умея отправлять формы? А оплатой за проект ты со мной поделишься? А что ты дальше делать будешь, когда у тебя что-то посложнее почтовой системы спросят? Ты, парень, сам себя в этот угол загнал, ейбогу. Я вот, свой первый проект взял лишь спустя почти 4 года после того, как начал изучать PHP (php, а не программирование как таковое, программированием я до этого занимался на других языках еще, плюс-минус лет 9, включая всякие бейсики). Ну...точнее веб. php+js+css3+html5. Именно вот проект. От начала до конца. То есть вот только тогда, когда на вопрос "А ты сможешь сделать %нужное_вписать%", я смог давать уверенный ответ "Я могу сделать что угодно, если это технически реализуемо". И, порой офигеваю от того, как люди на форуме пишут в своих резюме "выполню работу любой сложности", а потом просят помочь принять POST-запросы. Сюрреализм какой-то. И я уж точно не скажу никогда, что "прошло то время, когда я учился, и теперь я папка". Не прошло. Я каждый день учусь. Я никогда не скажу, что "я знаю %нужное_вписать% в совершенстве". Да хрен-то там.
И что это за стадия? И ещё раз, Почему не отправляются данные на почту, в чём причина? Так блин, ты можешь хотя бы дать мне направляющие вопросы? Ответив на которые, я пришёл бы к ответу?
не читал остальные комментарии, но я думаю что это угрозы. Это то же самое, когда ты берешь трубку, а на той стороне молчание.
Так я же не писал "Я всё могу" И что ты предлагаешь, вообще не браться за проект? А как тогда учиться, не подскажешь??? --- Добавлено --- Я не знал, что здесь обязательно нужно ООП Знаю! Что конкретно ты под эти подразумеваешь? Если документацию, то я читаю! Не всё понимаю, но читаю! Умею отправлять формы! Ошибка же не в коде! --- Добавлено --- Я не знал, что здесь обязательно нужно ООП Знаю! Что конкретно ты под эти подразумеваешь? Если документацию, то я читаю! Не всё понимаю, но читаю! Посоветуй, раз у тебя такой опыт! Как ты учишь язык программирование. Только не говори что с документации. Для новичков документация, это тёмный лес!
Котеров PHP7 в подленнике, Мэтт Зандстра - php, шаблоны и после этого Гугл для тебя будет в разы мощнее, чем был раньше 1500 страниц в итоге, но блин, помоему без этого никак. Первая книга подготовит тебя ко второй, а вторая позволит понимать хорошо ООП и легче разбираться в современном программировании. Чтобы меньше уходило времени на мелкие вопросы - хватит и первой книги.
Я не знал, что здесь обязательно нужно ООП Знаю! Что конкретно ты под эти подразумеваешь? Если документацию, то я читаю! Не всё понимаю, но читаю! Посоветуй, раз такое Большое спасибо!!!! Я обязательно их найду и начну изучать!!!