Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/18: Рейтинг темы: голосов - 18, средняя оценка - 4.61
2 / 2 / 1
Регистрация: 13.08.2011
Сообщений: 140

Переход на страницу только после отправки данных формы

23.11.2016, 13:46. Показов 3991. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую! Есть страница с формой обратной связи - feedback.php. При отправке данных формы обратной связи, происходит редирект на страницу sended.php, где написано: "Спасибо! Ваше сообщение отправлено". Можно ли сделать так, чтобы на страницу sended.php можно было попасть ТОЛЬКО при отправке данных формы, а не простым вбитием адреса в адресную строку браузера? Пардон, если вопрос не в тот раздел
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.11.2016, 13:46
Ответы с готовыми решениями:

Как вернуться на предыдущию страницу после отправки формы!
Я создал форму и отправил к обработчику форма <form class="helpdevelop" action="/main/forms/forhelpdev.php"...

После отправки формы перекидывает на страницу с 404 ошибкой
Добрейший вечерок, господа. Сижу с таким вопросом, не могу решить. Кто может помочь? Создал Лендинг. Залил его на хостинг. Имеется форма...

Переход на другую страницу после заполнения формы
Нужна помощь в создании php-документа. На сайте есть 2 поля: дата и месяц. Нужно,чтобы после ввода данных и нажатия кнопки "ок"...

15
11 / 11 / 12
Регистрация: 06.05.2015
Сообщений: 421
23.11.2016, 14:01
Цитата Сообщение от Logos300 Посмотреть сообщение
Приветствую! Есть страница с формой обратной связи - feedback.php. При отправке данных формы обратной связи, происходит редирект на страницу sended.php, где написано: "Спасибо! Ваше сообщение отправлено". Можно ли сделать так, чтобы на страницу sended.php можно было попасть ТОЛЬКО при отправке данных формы, а не простым вбитием адреса в адресную строку браузера? Пардон, если вопрос не в тот раздел
поставить ограничение на файл через .htaccess
файлу feedback дать полный доступ.
0
2 / 2 / 1
Регистрация: 13.08.2011
Сообщений: 140
23.11.2016, 14:06  [ТС]
А можно пример?
0
11 / 11 / 12
Регистрация: 06.05.2015
Сообщений: 421
23.11.2016, 14:11
Цитата Сообщение от Logos300 Посмотреть сообщение
А можно пример?
PHP
1
2
3
4
5
6
7
8
9
RewriteEngine on
RewriteBase /
Options All -Indexes
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^resource/(.*)$ resource/$1 [L]
RewriteRule ^.*$ [NC,L]
RewriteRule ^.*$ index.php [NC,L]
вот мой файл.
Доступ через строку браузера разрешен только в папку resource.
index.php может подключать любой файл.
В index включаем любой файл.
PHP
1
include 'admin/glavnaia.php';
0
2 / 2 / 1
Регистрация: 13.08.2011
Сообщений: 140
24.11.2016, 13:01  [ТС]
Добавлено через 22 часа 45 минут
Цитата Сообщение от Rider98 Посмотреть сообщение
PHP
1
2
3
4
5
6
7
8
9
RewriteEngine on
RewriteBase /
Options All -Indexes
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^resource/(.*)$ resource/$1 [L]
RewriteRule ^.*$ [NC,L]
RewriteRule ^.*$ index.php [NC,L]
[/PHP]
Правильно ли я понял? Мне нужно в свой .htaccess вставить строку:

RewriteRule ^feedback.php(.*)$ feedback.php/$1 [L]

А зачем вы помещаете include... в index.php?
0
930 / 846 / 190
Регистрация: 28.11.2013
Сообщений: 3,621
24.11.2016, 18:26
Цитата Сообщение от Logos300 Посмотреть сообщение
Можно ли сделать так, чтобы на страницу sended.php можно было попасть ТОЛЬКО при отправке данных формы, а не простым вбитием адреса в адресную строку браузера?
В этом нет особой необходимости. Просто закройте данную техническую страницу от индексации и т.п. Если сильно хочЦА и делать больше нечего, можете перед редиректом генерировать токен и добавлять его к адресу страницы спасибок, а там уже при отсутствии или некорректности токена показывать фигу вместо спасибок.
0
2 / 2 / 1
Регистрация: 13.08.2011
Сообщений: 140
25.11.2016, 09:07  [ТС]
Цитата Сообщение от miketomlin Посмотреть сообщение
В этом нет особой необходимости. Просто закройте данную техническую страницу от индексации и т.п. Если сильно хочЦА и делать больше нечего, можете перед редиректом генерировать токен и добавлять его к адресу страницы спасибок, а там уже при отсутствии или некорректности токена показывать фигу вместо спасибок.
Я в пхп не шарю. Но закрыть страницу сильно хочется. Можете привести код с комментариями для нубов?
0
930 / 846 / 190
Регистрация: 28.11.2013
Сообщений: 3,621
25.11.2016, 10:37
Цитата Сообщение от Logos300 Посмотреть сообщение
Я в пхп не шарю.
Если вы «в пхп не шарите», о чем тогда речь? Вы постите в ветке форума, посвященной пхп, как никак.
0
2 / 2 / 1
Регистрация: 13.08.2011
Сообщений: 140
26.11.2016, 04:14  [ТС]
Цитата Сообщение от miketomlin Посмотреть сообщение
Если вы «в пхп не шарите», о чем тогда речь? Вы постите в ветке форума, посвященной пхп, как никак.
Я всё понимаю. Но изучение пхп у меня впереди. Если вас не затруднит, приведите пожалуйста код по моим условиям, а я поставлю вам "+1". Так можно? Прошу помогите новичку
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
26.11.2016, 05:26
В feedback.php после успешной обработки формы занести в сессию какой-либо флаг.
PHP
1
2
3
4
session_start();
$_SESSION['feedback_processed'] = true;
header('Location: sended.php');
exit();
В sended.php проверять его наличие, если нет то, например, редиректить назад, или 404 выкинуть, неважно.
PHP
1
2
3
4
5
6
7
session_start();
if (isset($_SESSION['feedback_processed'])) {
    header('Location: feedback.php');
    exit();
}
unset($_SESSION['feedback_processed']);
// дальше выводится html код страницы
0
2 / 2 / 1
Регистрация: 13.08.2011
Сообщений: 140
28.11.2016, 02:59  [ТС]
Цитата Сообщение от Jewbacabra Посмотреть сообщение
В feedback.php после успешной обработки формы занести в сессию какой-либо флаг...
В sended.php проверять его наличие, если нет то, например, редиректить назад, или 404 выкинуть, неважно...
Добавил Ваш код. Редирект делается успешно. А вот при отправке формы на feedback.php возникают проблемы... Прилагаю к сообщению архив с проблемными страницами сайта и скрин ошибки. Помогите плиз!

Я там немного поковырялся... закомментировал exit() в обоих случаях.
Вложения
Тип файла: zip problem_28.11.2016.zip (711.7 Кб, 2 просмотров)
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
28.11.2016, 03:28
Цитата Сообщение от Logos300 Посмотреть сообщение
Добавил Ваш код. Редирект делается успешно. А вот при отправке формы на feedback.php возникают проблемы...
Естественно, так как это не готовый код, а примерный план реализации задачи.
Цитата Сообщение от Logos300 Посмотреть сообщение
Прилагаю к сообщению архив с проблемными страницами сайта и скрин ошибки. Помогите плиз!
Приведи сюда минимальный, но рабочий код, демонстрирующий проблему.
0
2 / 2 / 1
Регистрация: 13.08.2011
Сообщений: 140
29.11.2016, 01:56  [ТС]
feedback.php:

PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?php
// если была нажата кнопка "Отправить" 
if ($_POST['submit'])       
{
 
    $fio = substr(htmlspecialchars(trim($_POST['fio'])), 0, 1000);
    $mail = substr(htmlspecialchars(trim($_POST['mail'])), 0, 1000);
    $mess =  substr(htmlspecialchars(trim($_POST['mess'])), 0, 1000000); 
    
    //проверка полей на валидность:    
    $e1=null;
    if(strlen($fio)=="0"):
        $e1.='Не введены ФИО!<br>';
        exit();
    endif;
    
    $e2=null;
    if(!filter_var($mail, FILTER_VALIDATE_EMAIL)):
        $e2.='Введен неправильный емейл!<br>';
        exit();
    endif;
    
    $e3=null;
    if(strlen($mess)=="0"):
        $e3.='Не введен текст сообщения!<br>';
        exit();
    endif;
    
    $auto = "ЭТО АВТОМАТИЧЕСКОЕ СООБЩЕНИЕ С ВАШЕГО САЙТА! НА НЕГО НЕ НУЖНО ОТВЕЧАТЬ!<br><br><b>"; 
    // $to - кому отправляем 
    $to = 'proggerl@mail.ru';
    // Дополнительные заголовки
    $headers  = "Content-type: text/html; charset=utf8 \r\n"; 
    // функция, которая отправляет наше письмо
    mail($to, "Письмо с сайта", $auto."ФИО:</b><br> ".$fio."<br>"."<b>Емейл:</b><br>".$mail."<br>"."<b>Сообщение:</b><br>".$mess, $headers);
    session_start();
$_SESSION['feedback_processed'] = true;
header('Location: sended.php');
//exit();
}               
//<!-- Блок с настройками шапки сайта -->
include "inc/set_site.php";
?>
<!DOCTYPE html>
<html>
<head>
...
sended.php:

PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
<?
session_start();
if (isset($_SESSION['feedback_processed'])) {
    header('Location: feedback.php');
    //exit();
}
unset($_SESSION['feedback_processed']);
include "inc/set_site.php";
?>
<!DOCTYPE html>
<html>
<head>
...
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
29.11.2016, 13:27
Цитата Сообщение от Jewbacabra Посмотреть сообщение
минимальный, но рабочий код
Это значит безо всяких не относящихся к проблеме отправок писем и т.д.

В sended.php должно быть if ( !isset($_SESSION['feedback_processed']) )
exit нужен
0
2 / 2 / 1
Регистрация: 13.08.2011
Сообщений: 140
29.11.2016, 14:24  [ТС]
Теперь при отправке формы, браузер выдает:

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\OpenServer\domains\alt25.ru\sended.ph p:1) in C:\OpenServer\domains\alt25.ru\sended.ph p on line 2

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\OpenServer\domains\alt25.ru\sended.ph p:1) in C:\OpenServer\domains\alt25.ru\sended.ph p on line 2

Warning: Cannot modify header information - headers already sent by (output started at C:\OpenServer\domains\alt25.ru\sended.ph p:1) in C:\OpenServer\domains\alt25.ru\sended.ph p on line 4


Листинги:

sended.php:

PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
<?
session_start();
if (!isset($_SESSION['feedback_processed'])) {
    header('Location: feedback.php');
    exit();
}
unset($_SESSION['feedback_processed']);
include "inc/set_site.php";
?>
<!DOCTYPE html>
...
feedback.php:

PHP/HTML
1
2
3
4
5
6
7
if ($_POST['submit'])       
{
        ...
    mail($to, "Письмо с сайта", $auto."ФИО:</b><br> ".$fio."<br>"."<b>Емейл:</b><br>".$mail."<br>"."<b>Сообщение:</b><br>".$mess, $headers);
    header("Location: sended.php");
    exit;
}
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
29.11.2016, 14:27
Что означает предупреждение "headers already sent"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.11.2016, 14:27
Помогаю со студенческими работами здесь

Кнопка отправки формы только после заполнения всех полей
Здравствуйте,форумчане! Пожалуйста,подскажите,как сделать,чтобы кнопка отправки формы появлялась только после того,как все поля...

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

Формы ввода очищаются после отправки данных
Здравствуйте, я далек от php, но хотелось бы вникнуть во все это. У меня есть страница для заполнения, после отправки данных я хочу чтобы...

Перенаправление обратно на страницу при отправки формы
Собственно сам код формы &lt;form id=&quot;Form&quot; action=&quot;send3.php&quot; method=&quot;post&quot;&gt; &lt;div class=&quot;form-group&quot;&gt; ...

Переадресация на страницу после отправки сообщения
Отправляю сообщение на PHP все норм. Но после(через секунд 5) мне нужно сделать переадресацию на другую страницу(главную напр.). Вот...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru