- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Тренды маркетинга в 2024 году: мобильные продажи, углубленная аналитика и ИИ
Экспертная оценка Адмитад
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Коллеги, такой вопрос. Делаю форму обратной связи на лендинге. Использую язык РНР.
Вот такой код:
Вопрос: когда посетитель заполняет форму, нажимает кнопку "отправить", получается форма передаёт управление указанному выше РНР-скрипту (обработчику формы). Однако, вопрос в том, что указанный РНР-скрипт с помощью соответствующей функции mail() отправляет введённую в форму информацию владельцу сайта на его личную электронную почту. При этом, в конце работы скрипта форма обновляется и мне выводит именно новую страницу на экран браузера "send.php". А мне бы хотелось, чтобы страница оставалась прежней, то есть той, с которой эта форма и была отправлена...
Извините, если немного запутанно пояснил, но суть вот в чём: нормально ли такое поведение скрипта-обработчика формы обратной связи, когда в конце своей работы этот скрипт возвращает сам себя на вывод в браузер? Или это у меня какой-то косяк в самом скрипте?
---------- Добавлено 09.02.2018 в 08:25 ----------
Иными словами, страница обновляется и показана пустая страница обработчика "send.php". А мне бы хотелось, чтобы страница оставалась прежней, то есть, именно та, с которой и была заполнена эта форма. Где-то таким вот образом.
редирект обратно
ajax
фрейм
Вот, кстати говоря, открыл сайт-справочник по CSS от Влада Мержевича. Вот что там написано по поводу атрибута "action" у тега "form":
Иными словами, ключевая фраза тут "...после выполнения обработчиком действий по работе с данными формы он возвращает новый HTML-документ..."
То есть, видимо, я не ошибся всё-таки в том, что это поведение РНР-скрипта по умолчанию - это именно возвращать новый HTML-документ. В моём случае этот документ является пустым, поскольку кроме самого РНР-скрипта (обработчика формы), в этом документе более ничего нет. Вот он после отправки формы и возвращается мне в браузер, тем самым сайт пропадает и вместо него белый фон и всё, поскольку РНР-скрипт не виден в браузере... Вот таким образом...
---------- Добавлено 09.02.2018 в 10:00 ----------
Кстати говоря, по поводу редирека обратно, как было написано коллегой выше. Я так думаю, в РНР-скрипте в самом конце кода скрипта можно прописать вывод редиректа через заголовок такого типа, сразу послу функции отправки почты:
mail("admin@mysite.com", "Новый заказ", $message, $headers);
header("Location: http://www.mysite.com/form.php");
Вот где-то таким образом. Правильно?
---------- Добавлено 09.02.2018 в 10:15 ----------
Коллеги, мысль проскользнула в голове по поводу этой ситуации!
А может, мне пойти другим путём:
То есть, я просто инклудю этот внешний скрипт на странице формы, до самой формы, чтобы он успел подгрузиться. После этого в атрибуте "action" формы я оставляю поле пустым, чтобы форма вызвала сама себя. Таким образом, поскольку сайт у меня на РНР (файл "form.php"), страничка запускается, интерпретатор РНР проходит по странице, видит перед формой подключение внешнего РНР-скрипта, вставляет этот скрипт на страницу и уже потом считывает HTML-код самой формы.
Затем, посетитель сайта заполняет эту форму, нажимает "Отправить", - поскольку атрибут "action" пустой, то страница вызывает сама себя (перезагружается), интерпретатор инклудит внешний РНР-скрипт до начала кода самой формы и, соответственно, отправляет данные заполненной формы на указанную почту владельцу сайта.
Я всё попробовал, как описал выше, всё отлично отрабатывает.
Как думаете, оставить такой вариант? Или всё-же нужно прописать (заполнить) атрибут "action"? Просто меня несколько смущает тот момент, что он у меня вообще пустой при таком раскладе. Может, хоть относительный адрес самой формы туда прописать (то есть, в форме ссылка на саму форму). Исключительно для того, чтобы этот атрибут не был пустым.
Простите за такое количество текста, просто пытаюсь разобраться с данным вопросом.
Вариант с ajax чем не устраивает ?
form.php
handler.php
На форму вешаешь событие с e.preventDefault() и парсишь строки, отправляя далее полученные значения post/get запросом на handler.php, в котором ты и будешь работать с ними.
Вариант с ajax чем не устраивает ?
Подозреваю, что для ТС (который плавает в таких простых вещах как редирект и get/post) Аякс и прочий джейсон, будет языком планеты Нибиру.
...
хотя, имхо, аякс был бы просто идеальным решением этой проблемы
Как думаете, оставить такой вариант? Или всё-же нужно прописать (заполнить) атрибут "action"?
Оставляйте так. Это абсолютно нормально. Пустой action отправляет данные на этот же адрес. Можно ещё разделить GET и POST, поставив
Оставляйте так. Это абсолютно нормально. Пустой action отправляет данные на этот же адрес. Можно ещё разделить GET и POST, поставив
Спасибо огромное за ваш комментарий, по сути и без издёвок, как порой бывает. Отдельно спасибо за мысль разделить GET и POST, действительно отличная идея, нужно будет поразмыслить...
Тут вверху говорили, что для меня Ajax - это как полёт на планету Нибиру. Ну чтож, спасибо, хоть дальше меня не "послали" :)
---------- Добавлено 09.02.2018 в 15:35 ----------
Кстати говоря, я разделю GET и POST в самом РНР-обработчике формы, который затем проинклудю в коде перед самой формой, вот таким примерно образом.
Далее, подключаю вышеуказанный файл-обработчик формы к основной странице сайта:
При этом атрибут "action" у формы оставляю полностью пустым, тем самым форма вызывает сама себя. Хотя, по правде сказать, на этот случай я уже встречал такое вот решение, чтобы атрибут "action" не оставлять пустым, а скажем так, сделать более элегантное решение:
Но по своей сути - это одно и то-же, потому наверное просто оставлю атрибут "action" пустым и не буду переживать по данному вопросу...
2 ТС
AJAX решение
JS
Серверная часть
выдача ответа
silicoid
Спасибо вам большое, буду далее разбираться.
PS. Всем ответившим - большая благодарность!
https://habrahabr.ru/sandbox/93363/ - просмотрите, готовое простое решение. С объяснениями и комментариями