Не отправляется форма php

ТОП 10 причин, почему не отправляются данные из формы обратной связи

Привет, друзья. Сегодня хотел бы сделать небольшую статью/памятку для тех кто испытывает проблемы с отправкой формы обратной связи. Дело в том, что я часто получаю письма и сообщения в социальных сетях, связанные с тем, что у вас по какой-то причине не доходят письма отправленные из форм обратной связи, поэтому я решил составить некий FAQ, в котором опишу ТОП самых популярных причин, по которым данные могут не приходить на почту.

Сразу оговорюсь, что в большинстве случаев, список поможет тем, кто берет формы с моего блога, так как я могу ручаться, что они точно работают, ведь я сам их проверил и периодически использую в качестве заготовок для того или иного проекта.

1. Забывают поменять адреса в демке

Начну с банальности, но если бы вы знали сколько писем я получаю на почту с тестовыми сообщениями, то не стали бы критиковать меня за этот пункт. Дело в том, что по неопытности, в некоторых исходниках с формой обратной связи я, для примера, писал свои данные для отправки и получения почты. Из-за невнимательности, многие люди просто забывают поменять адреса на свои и потом пишут, что форма не работает. Тысячи писем в год приходит с абра кадаброй и наборами символов, которые все мы вбиваем, чтоб протестировать форму.

Не отправляется форма php. Смотреть фото Не отправляется форма php. Смотреть картинку Не отправляется форма php. Картинка про Не отправляется форма php. Фото Не отправляется форма php

Вывод: пожалуйста, будьте внимательны и прежде чем писать, что что-то не работает, убедитесь, что правильно задали параметр всех возможных настроек.

2. Используется слишком старая версия PHP

Друзья, все формы, которые я делаю, тестируются на последних версиях PHP, то есть выше 7.0. Раньше это была 5.6 и, некоторые исходники могут работать на этой версии, но я рекомендую именно 7 и выше. На старой версии что-то может не поддерживаться и из-за этого, иногда, возникают проблемы.

Вывод: убедиться, что работаете с современным стандартом PHP и, в случае если у вас старая версия, то переключиться на 7. Сделать это можно у вашего хостера. Обычно, достаточно просто выбрать более актуальную и все. Никаких проблем с переходом возникнуть не должно. У меня, на Beget это выглядит так:

Не отправляется форма php. Смотреть фото Не отправляется форма php. Смотреть картинку Не отправляется форма php. Картинка про Не отправляется форма php. Фото Не отправляется форма php

3. Попытка отправить данные просто открыв файл с формой в браузере

Многие, по неопытности, думают, что можно скачать демку на компьютер, открыть с рабочего стола ее в браузере и данные придут на почту. Друзья, так не бывает. Мы для отправки формы используем PHP, а это серверный язык программирования. То есть для работы нужен сервер локальный, например, Openserver, или реальный (любой хостинг или выделенный сервер).

Вывод: тестировать форму на сервере (хостинге).

4. Не настроен локальный сервер

Многие из тех, кто тестирует форму на локальном хостинге думают, что при отправке данных из контактной формы обязательно должны прийти на почту. Но это не всегда так. В большинстве случаев, по умолчанию сервера настроены так, что при отправке содержимое сообщения складываются в определенной папке в виде текстового файла. В Openserver, например, при отправке письма данные улетают в папку «email» в виде txt-файлов, которая находится по пути «/userdata/tmp/email».

Но, есть возможность настроить отправку через SMTP. Подробнее о том, как это сделать написано в официальной документации.

Вывод: настроить сервер или искать сообщения в папке, в которую складывает письма ваш сервер.

5. Тестовый период хостинга или бесплатный вариант

Вывод: тестировать форму на оплаченном домене и хостинге.

6. Хостер не позволяет отправлять письма с сайта на бесплатные почтовые ящики

Иногда хостеры, в рамках все той-же борьбы со спамом отключают (ограничивают) возможность отправки писем на бесплатные почтовые ящики. Тоже касается и отправителя. Отправить данные можно только на привязанные к домену адреса или с привязанных к домену адресов. Уточните у хостера эти моменты, если предыдущие советы не помогли.

Кроме того, загляните в справку от Reg.ru, даже если вы не пользуетесь этим сервисом. Особенно в раздел «Возможные проблемы». Советы приведенные там могут помочь вам, натолкнув на мысль, что еще стоит проверить или уточнить у своего хостера.

Вывод: поинтересуйтесь у хостера нет ли ограничений на отправку писем на/с не привязанных к домену адресов.

7. Ошибка в путях при подключении

Вывод: изучите консоль на предмет ошибок, прежде чем говорить, что форма не работает.

8. Блокировка входящей почты самим почтовым сервисом

Недавно общался с девочкой в комментариях по поводу того, что не доходят письма. Она проверила все, что только возможно, перечитала все комментарии, а проблема оказалась в самом почтовом сервисе, который она использовала. Точнее не проблема, а система безопасности.

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

Не отправляется форма php. Смотреть фото Не отправляется форма php. Смотреть картинку Не отправляется форма php. Картинка про Не отправляется форма php. Фото Не отправляется форма php

9. Не работает PHP на сервере

Да, и такое бывает. Мне периодически пишут люди, что у них не работает форма и когда я начинаю разбираться в проблеме и прошу их вывести на сайте:

То оказывается, что PHP-теги вообще не обрабатываются. Люди используют какой-нибудь самый дешевый тариф и оказывается, что на нем вообще не поддерживается PHP. Кроме того, некоторые забывают, что работать нужно в файле с расширением «.php», а не «.html».

Вывод: убедитесь в том, что PHP-теги обрабатываются должным образом.

10. Отправка писем заблокирована хостером

Случалось со мной и такое. Обратился человек помочь с настройкой формы. Я все сделал, но при тестировании оказалось, что ничего не работает. Тогда закинул к себе на сервер и решил протестировать там. Оказалось, что письма успешно доходят. Тогда проверил все то, о чем писал выше, но все оказалось в порядке. Решил писать в техподдержку. Вот ответ:

Не отправляется форма php. Смотреть фото Не отправляется форма php. Смотреть картинку Не отправляется форма php. Картинка про Не отправляется форма php. Фото Не отправляется форма php

Оказалось, что раньше под этим доменом на хостинге болтался заброшенный сайт. Вроде как его взломали и рассылали спам, поэтому хостер решил его заблокировать. Как видите, уже 2 года была заблокирована возможность отправлять письма с данного ресурса.

Вывод: не стесняйтесь обращаться в техническую поддержку. Это может сэкономить вам много времени.

Вот такая заметка получилась. Надеюсь, она поможет вам найти проблему и понять почему ваша форма обратной связи не работает, а если вы сталкивались с еще какими-нибудь типичными проблемами, то напишите пожалуйста о них в комментариях. Этим вы поможете сотням людей и они будут вам благодарны.

Похожие публикации

12 комментариев

Не отправляется форма php. Смотреть фото Не отправляется форма php. Смотреть картинку Не отправляется форма php. Картинка про Не отправляется форма php. Фото Не отправляется форма php

Не отправляется форма php. Смотреть фото Не отправляется форма php. Смотреть картинку Не отправляется форма php. Картинка про Не отправляется форма php. Фото Не отправляется форма php

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

Не отправляется форма php. Смотреть фото Не отправляется форма php. Смотреть картинку Не отправляется форма php. Картинка про Не отправляется форма php. Фото Не отправляется форма php

Добрый день! А у меня беда «наоборот». Форма обратной связи работает, письма доходят, а вот адреса отправителя нет ( в форме это поле обязательно к заполнению). Если дадите совет, что сделать, буду очень признательна!

Не отправляется форма php. Смотреть фото Не отправляется форма php. Смотреть картинку Не отправляется форма php. Картинка про Не отправляется форма php. Фото Не отправляется форма php

Здравствуйте. Вот такое поле, примерно, должны быть в обработчике формы:

Не отправляется форма php. Смотреть фото Не отправляется форма php. Смотреть картинку Не отправляется форма php. Картинка про Не отправляется форма php. Фото Не отправляется форма php

dimadv7, спасибо! только я совсем новичок. Скачала плагин Contact Form by BestWebSoft и установила шорт код на сайт.
где и как можно найти это поле? Заранее спасибо!

Не отправляется форма php. Смотреть фото Не отправляется форма php. Смотреть картинку Не отправляется форма php. Картинка про Не отправляется форма php. Фото Не отправляется форма php

Я думал вы делаете самостоятельно, а вы wordpress используете. Это вам в настроках плагина нужно копаться. Тут я помочь не могу. Насколько я знаю, чтобы там все работало, как надо, нужно почту для домена использовать, в качестве отправителя. То есть почту вида ‘чтототам@домен.ру’. А в код плагина лезть не рекомендую.

Не отправляется форма php. Смотреть фото Не отправляется форма php. Смотреть картинку Не отправляется форма php. Картинка про Не отправляется форма php. Фото Не отправляется форма php

Спасибо! А wordpress это плохо? Видите ли, я вообще темнота насчет сайтостроения. Вот и решила поизучать эту тему для собственного саморазвития. Во-первых, по работе нужно (есть проблемы с нашим разработчиком), во вторых мне самой это просто мегаинтересно. Кучу видеоуроков смотрела, вот и скачала плагин.

Не отправляется форма php. Смотреть фото Не отправляется форма php. Смотреть картинку Не отправляется форма php. Картинка про Не отправляется форма php. Фото Не отправляется форма php

Источник

Форма HTML / PHP не отправляет данные POST

при разработке страницы регистрации я столкнулся с довольно раздражающей проблемой.
Когда я отправляю форму через кнопку отправки, я вижу, что она отправляет в браузер как «user = myusername», но PHP-часть его вообще не берет.
Я пробовал отладку через «эхо» & «print_r», но они оба показывали пустое, однако я получаю журналы ошибок от zPanel.

Вот часть кода PHP:

А вот HTML-часть, которая запускает вышеуказанное:

И да, это с начальной загрузкой.
Теперь, когда вы пытаетесь войти, он фактически перенаправляет вас в файл register.php? Empty, заявляя, что вы ничего не вводите в поля.

И вот что zPanel извергает на меня:

[ошибка] Примечание PHP: Неопределенный индекс: пароль
[ошибка] PHP Примечание: неопределенный индекс: электронная почта

Честно говоря, я понятия не имею, что вызывает все эти проблемы.
Я что-то пропустил?

Решение

Прежде всего, вы не объявили метод формы. Так должно быть

Прежде чем перейти к дальнейшему развитию PHP, вы должны узнать разницу между GET & СООБЩЕНИЕ.

Данные формы могут быть отправлены как переменные URL (с методом = «get») или как HTTP-транзакция post (с методом = «post»). Вы должны упомянуть метод GET / POST, как

В вашей форме отсутствует метод и действие. Действие — это файл, который будет получать и обрабатывать данные. Метод, как форма будет отправлять данные.

Вы должны добавить name для кнопки submit :

После этого проверьте isset кнопка отправки:

Источник

Не отправляются данные из формы

Комментарий модератора
Не отправляется форма php. Смотреть фото Не отправляется форма php. Смотреть картинку Не отправляется форма php. Картинка про Не отправляется форма php. Фото Не отправляется форма phpИзбегайте использование «кричащего» выделения текста, в том числе CAPS LOCK. (Правила п.3.4)

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Не отправляются данные с формы
Здравствуйте форумчане, проблема в следующем, данные с формы не отправляются, получаются пустыми(.

Не отправляется форма php. Смотреть фото Не отправляется форма php. Смотреть картинку Не отправляется форма php. Картинка про Не отправляется форма php. Фото Не отправляется форма phpНе отправляются данные с формы
заявка с сайта приходит но значения «телефон» и «имя» не заполнены!! в чем косяк?? я новичок.

Не отправляются данные из формы
Всем привет! Сделал небольшой сайт по модели MVC, на сайте имеется кнопка «Заказать обратный.

Content-type:text/HTML; пробуйте поменять на Content-type: text/plain; а charset = utf-8 на Charset=utf-8

Добавлено через 54 секунды
и не мешало бы добавить поле From

Добавлено через 15 секунд
в заголовке

А я было подумал, что у вас проблемы с размером шрифта Не отправляется форма php. Смотреть фото Не отправляется форма php. Смотреть картинку Не отправляется форма php. Картинка про Не отправляется форма php. Фото Не отправляется форма php

Источник

Отправка данных формы

Предварительные знания:Базовая компьютерная грамотность, понимание HTML и базовые знания по HTTP и программированию на стороне сервера.
Задача:Понять, что происходит при отправке данных формы, в том числе получить представление о том, как данные обрабатываются на стороне сервера.

Куда отправляются данные?

Здесь мы обсудим, что происходит с данными при отправке формы.

О клиентской/серверной архитектуре

WEB основан на очень простой клиент-серверной архитектуре, которую можно обобщить следующим образом: клиент (обычно веб-браузер) отправляет запрос на сервер (в основном веб-сервер, такой как Apache, Nginx, IIS, Tomcat, и т. д.), используя протокол HTTP. Сервер отвечает на запрос, используя тот же протокол.Не отправляется форма php. Смотреть фото Не отправляется форма php. Смотреть картинку Не отправляется форма php. Картинка про Не отправляется форма php. Фото Не отправляется форма php

Примечание: Для получения более полного представления о том, как работают клиент-серверные архитектуры, ознакомьтесь с модулем «Первые шаги в программировании на стороне сервера».

На стороне клиента: определение способа отправки данных

Атрибут action

Этот атрибут определяет, куда отправляются данные. Его значение должно быть действительным URL. Если этот атрибут не указан, данные будут отправлены на URL-адрес страницы, содержащей форму.

В этом примере данные отправляются на абсолютный URL — http://foo.com :

Если атрибуты не указаны, как показано ниже, данные из формы отправляются на ту же страницу, на которой размещается данная форма:

Многие старые страницы используют следующий синтаксис, чтобы указать, что данные должны быть отправлены на ту же страницу, которая содержит форму; это было необходимо, потому что до появления HTML5 атрибут action был обязательным. Это больше не нужно.

Атрибут method

Чтобы понять разницу между этими двумя методами, давайте вернёмся назад и рассмотрим, как работает HTTP. Каждый раз, когда вы хотите получить доступ к ресурсу в Интернете, браузер отправляет запрос на URL-адрес. HTTP-запрос состоит из двух частей: заголовка, который содержит набор глобальных метаданных о возможностях браузера, и тела, которое может содержать информацию, необходимую серверу для обработки конкретного запроса.

Метод GET

Рассмотрим следующую форму:

HTTP-запрос имеет следующий вид:

Примечание: вы можете найти этот пример на GitHub — смотрите get-method.html (see it live also).

Метод POST

Метод POST немного отличается. Браузер использует этот метод для связи с сервером при запросе ответа с учётом данных, представленные в теле HTTP-запроса: «Эй, сервер, взгляни на эти данные и отправь мне соответствующий результат». Если форма отправляется с использованием этого метода, данные добавляются в тело HTTP-запроса.

Заголовок Content-Length указывает размер тела, а заголовок Content-Type указывает тип данных, отправляемых на сервер. Мы обсудим эти заголовки позже.

Примечание: вы можете найти этот пример на GitHub — смотрите post-method.html (see it live also).

Просмотр HTTP-запросов

HTTP-запросы никогда не отображаются пользователю (если вы хотите их видеть, вам нужно использовать такие инструменты, как Firefox Network Monitor или Chrome Developer Tools). Например, данные формы можно увидеть на вкладке Сеть (Network) в Chrome следующим образом (после отправки формы):

Затем вы можете получить данные формы, как показано на рисунке ниже.

Не отправляется форма php. Смотреть фото Не отправляется форма php. Смотреть картинку Не отправляется форма php. Картинка про Не отправляется форма php. Фото Не отправляется форма php

Единственное, что отображается пользователю — вызываемый URL. Как упоминалось раннее, запрос с методом GET позволит пользователю увидеть информацию из запроса в URL, а запрос с методом POST не позволит. Две причины, почему это может быть важно:

На стороне сервера: получение данных

Какой бы HTTP вы не выбрали, сервер возвращает строку, которая будет последовательно проанализирована для получения данных в формате листа с парами ключ/значение. Способ получения доступа к этому листу зависит от платформы разработки или особенностей фреймворка, который вы можете использовать. Технологии, которые вы используете, определяют, как обрабатываются скопированные ключи. Часто, приоритетным является последнее полученное значение для данного ключа.

Пример: Чистый PHP

Не отправляется форма php. Смотреть фото Не отправляется форма php. Смотреть картинку Не отправляется форма php. Картинка про Не отправляется форма php. Фото Не отправляется форма php

Примечание: Этот пример не будет работать, когда вы загружаете его в браузер локально — браузер не может интерпретировать PHP код, после отправки данных из формы, браузер просто предложит загрузить PHP файл. Чтобы пример заработал, необходимо отправить его на PHP сервер. Для тестирования PHP на локальных серверах можете пробовать MAMP (Mac and Windows) и/или AMPPS (Mac, Windows, Linux).

Пример: Python

Этот пример показывает, как вы можете использовать Python для решения той же задачи — отобразить отправленные данные на странице. В этом примере используется Flask framework для визуализации шаблонов, поддерживающих форму отправки данных (смотри python-example.py).

Два шаблона из коде выше взаимодействуют так:

Другие языки и фреймворки

Примечание: Обучению фреймворкам и работе с серверами не входит в рамки этой статьи. Если хотите узнать больше, ссылки ниже помогут в этом.

Особый случай: отправка файлов

Отправка файлов с помощью форм HTML — это особый случай. Файлы — это бинарные данные или рассматриваются как таковые, в то время как все остальные — это текстовые данные. Поскольку HTTP — это текстовый протокол, есть особые требования для работы с бинарными данными.

Атрибут enctype

Если хотите отправить файл, нужно сделать следующие три шага:

Предупреждение: Многие сервера имеют заданные ограничения на размер загружаемых файлов и запросы от пользователей, чтобы защититься от возможных злоупотреблений. Важно проверять эти ограничения у администратора сервера, прежде чем загружать файлы.

Проблемы безопасности

Каждый раз, когда вы отправляете данные на сервер, вы должны учитывать безопасность. HTML-формы являются наиболее распространёнными векторами атак на серверы(места, где могут происходить атаки). Проблемы вытекают не из самих форм HTML, а из-за того, как сервер обрабатывает данные из этих форм.

В зависимости от того, что вы делаете, вы можете столкнуться с некоторыми очень известными проблемами безопасности:

XSS «Межсайтовый скриптинг» и CSRF «Подделка межсайтовых запросов»

Межсайтовый скриптинг (XSS «Cross Site Request Forgery») позволяет злоумышленникам внедрить клиентский скрипт в веб-страницы, просматриваемые другими пользователями. Подделка межсайтовых запросов (CSRF «Cross-Site Scripting») может использоваться злоумышленниками для обхода средств контроля доступа, таких как одна и та же политика происхождения. Последствие от этих атак может варьироваться от мелких неудобств до значительного риска безопасности.

Чтобы предотвратить эти атаки, вы всегда должны проверять данные, которые пользователь отправляет на ваш сервер, и (если вам нужно отобразить их) стараться не отображать HTML-контент, предоставленный пользователем. Вместо этого вы должны обработать предоставленные пользователем данные, чтобы не отображать их слово в слово. Сегодня почти все платформы на рынке реализуют минимальный «фильтр», который удаляет элементы HTML

Источник

Обработка форм в PHP

Что такое форма

и пр., которые заполняются пользователем, отправляются на сервер и обрабатываются с помощью PHP.

Простой пример формы:

В этой форме есть 2 поля для заполнения (input и textarea), а также кнопка отправки формы.

Итак, давайте разбираться, что тут вообще происходит.

Не отправляется форма php. Смотреть фото Не отправляется форма php. Смотреть картинку Не отправляется форма php. Картинка про Не отправляется форма php. Фото Не отправляется форма php

Обработка формы с GET-параметрами

Формы можно передавать с помощью методов GET и POST. Указывается метод с помощью атрибута method тега form :

Если метод не указан, то по-умолчанию форма отправляется методом GET.

Формы, отправляемые методом GET, передают данные через URL-адрес.

В отличие от обычных переменных, этот массив виден в любой области видимости, в т.ч. внутри функций. Внутри этого массива хранятся GET-параметры текущего запроса в виде ассоциативного массива.

Получить доступ к этим параметрам можно так:

Поэтому важно указывать атрибут name каждому элементу формы, иначе этот элемент не отправится на сервер.

Итак, создадим простенькую форму и добавим ей PHP-обработчик:

Теперь при отправке заполненной формы PHP выведет на экран то, что мы в эту форму написали.

Метод POST

По этой причине для отправки форм, которые могут содержать конфиденциальную информацию, нужно всегда использовать метод POST. При использовании метода POST данные передаются в теле http-запроса, а не в URL.

Метод GET в формах чаще всего используется для поиска чего-либо (товаров, статей и т.д.).

Некоторые разработчики считают, что данные, передаваемые методом POST, имеют какую-то особую защиту, которая не позволяет злоумышленнику украсть или подменить их.

Это не так. Никакой дополнительной защиты у метода POST нет. Для защиты http-запросов нужно использовать https.

Изменение обработчика формы

При желании вы можете отправлять форму не на текущий URL, а на какой-нибудь другой. Для этого достаточно указать путь к скрипту в атрибуте action :

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *