Гость
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Отправка формы обратной связи - белый экран / 7 сообщений из 7, страница 1 из 1
25.03.2017, 18:58
    #39427086
ukugyul552465
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отправка формы обратной связи - белый экран
Здравствуйте.
Есть сайт(тестовый):
На нём висит форма для отправки на email письма (вызывается php-скрипт).
Скрипт:

<?php
$user_name = $_POST['user_name'];
$user_email = $_POST['user_email'];
$user_phone = $_POST['user_phone'];
$theme = $_POST['theme'];
$text_message = $_POST['text_message'];
$user_name = htmlspecialchars($user_name);
$user_email = htmlspecialchars($user_email);
$user_phone = htmlspecialchars($user_phone);
$theme = htmlspecialchars($theme);
$text_message = htmlspecialchars($text_message);
$user_name = $user_name . " " . $user_email . " " . $user_phone;
mail('somemail@gmail.com',$theme,$text_message,$user_name);
?>



1. Скрипт работает, т.е. письмо полностью успешно доставляется на somemail@gmail.com.
Однако, перед пользователем возникает белый экран, убирающийся только стрелочкой назад.

2. Можно ли сделать отправку формы, т.е. вызов скрипта feedback.php асинхронным?

3. И ещё 1 момент: как убрать табличку с предупреждением о повторной отправке формы?
...
Рейтинг: 0 / 0
25.03.2017, 19:24
    #39427089
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отправка формы обратной связи - белый экран
1. А что должно быть? Ваш код вообще ничего не выводит в браузер.
2. Можно.
3. Распространенным способом избежать повторной отправки формы является редирект, если Вы это имели в виду. Саму же "табличку с предупреждением" выдает веб-браузер.
...
Рейтинг: 0 / 0
25.03.2017, 19:56
    #39427098
ukugyul552465
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отправка формы обратной связи - белый экран
1. Должно быть ничего - то есть скрипт выполняется, но не перебрасывает на другую (белую) страницу, должно оставаться на этой странице.
2. Каким образом? Засунуть весь код формы в скрипт и вызвать его асинхронно?
3. Т.е. нельзя каким-либо образом пометить форму, чтобы браузер не надоедал своими табличками?
...
Рейтинг: 0 / 0
25.03.2017, 20:43
    #39427113
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отправка формы обратной связи - белый экран
ukugyul5524651. Должно быть ничего - то есть скрипт выполняется, но не перебрасывает на другую (белую) страницу, должно оставаться на этой странице.С чего вдруг? Сервер ответил и прислал "Content-Type: text/html; charset=UTF-8" (хтмл-страницу) длиной ровно ноль байт. Что и отражено в окне браузера.

ukugyul5524652. Каким образом?Как то так

ukugyul5524653. Т.е. нельзя каким-либо образом пометить форму, чтобы браузер не надоедал своими табличками?Поясните, чего именно Вы хотите добиться.
...
Рейтинг: 0 / 0
26.03.2017, 02:39
    #39427192
бухалтер фантоцци
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отправка формы обратной связи - белый экран
ukugyul5524651. Должно быть ничего - то есть скрипт выполняется, но не перебрасывает на другую (белую) страницу, должно оставаться на этой странице.
1. По-умолчанию браузер отправляет POST-запрос на указанный в атрибуте action URL-адрес и пытается открыть эту страницу.
Вы можете указать пустой URL (action=""), тогда браузер отправит POST-запрос на текущую страницу с её перезагрузкой
(но так лучше не делать, да и w3c-валидатор будет ругаться на пустой атрибут action).
Согласно Вашему текущему коду браузер и действует (отправляет POST запрос на feedback.php и открывает эту страницу):
Ваш текущий код
Код: html
1.
2.
3.
4.
<form method="post" action="feedback.php">
  ...
  <input type="submit" name="subscribe" value="Отправить!"> .
</form>


Вы можете в PHP-коде файла feedback.php сделать редирект на любую страницу (как вариант, указанную в скрытом поле).
Но имхо это устаревший способ . Когда на Вашем тестовом сайте появятся JavaScript, Вы рано или поздно дойдёте до AJAX.

ukugyul5524652. Каким образом? Засунуть весь код формы в скрипт и вызвать его асинхронно?
2. Лучше формировать форму обр.связи (и не только её) через JavaScript и делать AJAX-запрос без всяких перезагрузок и редиректов,
оставаясь на текущей странице, не используя без надобности никакие iframe и т.д.

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

ukugyul5524653. Т.е. нельзя каким-либо образом пометить форму, чтобы браузер не надоедал своими табличками?
3. Если только в настройках браузера, что вряд-ли,
да и каждому посетителю это не объяснишь, тем более не заставишь что-то дополнительно настраивать.
Браузер выдаёт запрос на подтверждение повторной отправки POST-данных, что является правильным действием.
...
Рейтинг: 0 / 0
26.03.2017, 19:58
    #39427387
ukugyul552465
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отправка формы обратной связи - белый экран
Попытался сделать через AJAX, возникла небольшая проблема:

Выплывающие ошибкиNotice: Undefined index: user_name in /storage/h6/657/1008657/public_html/feedback.php on line 2

Notice: Undefined index: user_email in /storage/h6/657/1008657/public_html/feedback.php on line 3

Notice: Undefined index: user_phone in /storage/h6/657/1008657/public_html/feedback.php on line 4

Notice: Undefined index: theme in /storage/h6/657/1008657/public_html/feedback.php on line 5

Notice: Undefined index: text_message in /storage/h6/657/1008657/public_html/feedback.php on line 6


feedback.php без изменений.
jq.js загрузил в корень

index.php
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
<meta name="viewport" content="width=device-width">
    <title>Название статьи</title>
    <link rel="stylesheet" href="index.css">
<?php include_once "header.php"; ?>
<H1 align=center>Название статьи</H1>
<meta name="Description" content="Описание данной статьи.">
<meta name="Keywords" content="rating, релевантность, relevancy">
Скрип всплывающего меню


<script type="text/javascript" src="jq.js"></script>
       
 
   
<script type="text/javascript" language="javascript">
function call() {
var msg = $('#feedback_form').serialize();
$.ajax({
type: 'POST',
url: 'feedback.php',
data: msg,
success: function(data) {
$('#results').html(data);
},
error: function(xhr, str){
alert('Возникла ошибка: ' + xhr.responseCode);
}
});
 
}
</script>



</head>
<body>

<p>
<H1 align=center> Заголовок 1 уровня</H1>
</p>
<p>
<H2 align=center> Заголовок 2 уровня</H2>
</p>
<p>
<H3 align=center> Заголовок 3 уровня</H3>
</p>
<p>
Просто текст. Это просто текст и мы сейчас проверяем, как отображается текст в различных устройствах, в частности, с мобильных браузеров.
</p>



<div id="results">вывод</div>


<form method="post" action="javascript:void(null);" onsubmit="call()">>
<p><input type="text" name="user_name" pattern="[А-Яа-яЁё]{4,}" placeholder="Ваше Имя" title="Имя должно быть на русском. Пример: Степа, Петя, Вася, Оля"/></p>
<p><input type="email" name="user_email" pattern="([A-z0-9_.-]{1,})@([A-z0-9_.-]{1,}).([A-z]{2,8})" placeholder="Ваш E-mail" title="Пример: bloggood@mail.ru" required /></p>
<p><input type="text" name="user_phone" pattern="\+([0-9]{1,3})(\([0-9]{2,3}\))-([0-9]{3})-([0-9]{2})-([0-9]{2})" placeholder="Ваш телефон" title="Пример: +7(999)-000-00-00"/></p>
<p><input type="text" name="theme" placeholder="Тема заявки" title="Введите тему вашего вопроса/заявки"/></p>
<p><textarea name="text_message" rows="6" cols="40" placeholder="Ваш вопрос"></textarea></p>
<input type="submit" value="Отправить"/>
</form>





</body>


<?php include_once "footer.php"; ?>



</html>



Странно, прочитал об этих ошибках - как будто в feedback.php что-то не так.
...
Рейтинг: 0 / 0
26.03.2017, 20:02
    #39427388
ukugyul552465
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отправка формы обратной связи - белый экран
<form method="post" id="feedback_form" action="javascript:void(null);" onsubmit="call()">>

Подредактировал форму - теперь всё нормально.
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Отправка формы обратной связи - белый экран / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]