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

PHP redirect с данными из POST Как обмануть?

22.11.2012, 11:53. Показов 11131. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, уважаемые гуру. Подскажите, есть ли возможность автоматического редиректа на новый URL с данными, полученными из формы методом POST
Стандартно - не работает, поскольку заголовок уже существует.
PHP
1
2
3
4
5
6
7
8
9
10
<?php
 
$host  = $_SERVER['HTTP_HOST'];
$newurl1=$_GET["menu"];
$newurl2=$_GET["menu1"];
$newurl= "http://$host/$newurl1/$newurl2";
    header('Location: ' . $newurl);
    exit();
 
?>
Выдает Cannot modify header information - headers already sent by

Может есть способ как это обойти?
Заранее безмерно благодарен.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.11.2012, 11:53
Ответы с готовыми решениями:

Redirect с параметром, методом POST
Делаю Redirect с параметром ,по умолчанию испоьзуется метод GET и все параметры видны в адресе. А как можно сделать метод POST, что бы не...

Как осуществить Response.Redirect методом POST
Нужно сделать Redirect методом POST Вот нашел один пример http://kbyte.ru/ru/Programming/Sources.aspx?id=782&amp;mode=show Но не...

Как в web.config на iis прописать Redirect так же как в .htaccess типа: Redirect 301 /thumb http://st.site2.com?
Нужно прописать redirect на IIS в web.config который выполняет то же самое что и строка Redirect 301 /thumb http://st.site2.com в...

12
52 / 52 / 9
Регистрация: 09.10.2009
Сообщений: 984
22.11.2012, 12:17
Странно , ты пишешь про POST , а ипользуешь $_GET["menu"]; ???
Попробуй использовать SESSION .
0
0 / 0 / 1
Регистрация: 14.11.2012
Сообщений: 9
22.11.2012, 12:21  [ТС]
Цитата Сообщение от SATMAN Посмотреть сообщение
Странно , ты пишешь про POST , а ипользуешь $_GET["menu"]; ???
Разумеется POST. Не успел исправить код.
Цитата Сообщение от SATMAN Посмотреть сообщение
Попробуй использовать SESSION
Можно простой пример конструкции?
Спасибо
0
601 / 468 / 73
Регистрация: 22.01.2009
Сообщений: 1,180
Записей в блоге: 1
22.11.2012, 13:24
неважно что использовать. код правильный, замечание: при использовании редиректа не на основную страницу (http://example.com), адрес сайта можно не указывать, можно просто header('Location: /path/to/page.html') -- вдруг сервер HTTP_HOST не передает, или передает но неправильно? ) а ошибка эта возникает из-за того, что где-то до этого происходит вывод. советы тоже стандартные: проверить, чтоб ни в одном скрипте, до этой строчки не было небуферизированного echo или каких-либо символов до "<?php". если же они есть и убрать сложно, достаточно в стартовом скрипте указать ob_start().

Добавлено через 5 минут
ах, да. еще возможны какие-то сообщения/предупреждения -- это тоже вывод. например, если в $_SERVER вдруг по какой-то причине не оказалось HTTP_HOST или $_POST['menu1'] не определена -- выводится E_NOTICE с сообщением undefined index at тра-ля-ля. лучше все-таки на всякий пожарный проверять:
PHP
1
2
$newurl1 = isset($_POST['menu']) ? $_POST['menu'] : '';
$newurl2 = isset($_POST['menu1']) ? $_POST['menu1'] : '';
ну или, в крайнем случае, error_reporting(0)
0
0 / 0 / 1
Регистрация: 14.11.2012
Сообщений: 9
22.11.2012, 13:35  [ТС]
Пробую
PHP
1
2
3
4
5
6
7
8
9
10
11
<?php
ob_start();
$host  = $_SERVER['HTTP_HOST'];
$newurl1 = isset($_POST['menu']) ? $_POST['menu'] : '';
$newurl2 = isset($_POST['menu1']) ? $_POST['menu1'] : '';
$newurl= "http://$host/$newurl1/$newurl2";
 
  header('Location: ' . $newurl);
    exit();
 
?>
Тот же результат. $host убирал - не реагирует
0
601 / 468 / 73
Регистрация: 22.01.2009
Сообщений: 1,180
Записей в блоге: 1
22.11.2012, 13:42
из браузера обращение идет именно к этому скрипту (всмысле, он не подключается из другого)?

"<?php" идет точно в самом начале файла, и до него нет ни одного символа (пробелы тоже считаются как символ)?
0
0 / 0 / 1
Регистрация: 14.11.2012
Сообщений: 9
22.11.2012, 13:44  [ТС]
скрипт получает данные из формы test.html
<?php в самом начале скрипта
0
601 / 468 / 73
Регистрация: 22.01.2009
Сообщений: 1,180
Записей в блоге: 1
22.11.2012, 13:57
значит содержимое файлов примерно такое:
test.html:
HTML5
1
2
3
4
5
<form action="/redirect.php" method="post">
<input type="hidden" name="menu" value="folder"/>
<input type="hidden" name="menu1" value="file.html"/>
<input type="submit"/>
</form>
а redirect.php -- это код, который выше.
все так?
1. зачем в коде стоит exit?
2. какой-то вывод, кроме "Cannot modify header information - headers already sent by" присутствует?
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
22.11.2012, 13:59
кодировка самого скрипта какая?

Добавлено через 1 минуту
Цитата Сообщение от NEbO Посмотреть сообщение
1. зачем в коде стоит exit?
чтобы скрипт закончил выполняться если там еще что то есть
1
601 / 468 / 73
Регистрация: 22.01.2009
Сообщений: 1,180
Записей в блоге: 1
22.11.2012, 14:01
точно. utf-8 с bom может быть, тогда нужно поменять на просто utf-8 без бома, ну или на ansi, на худой конец.
ну экзит без if-а выглядит как-то не очень, по меньшей мере.
0
0 / 0 / 1
Регистрация: 14.11.2012
Сообщений: 9
22.11.2012, 14:08  [ТС]
Поменял кодировку на UTF-8 без Boom и что-то заработало. Может кому пригодиться.
Файл с формой:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
<form action="test1.php" method="POST">
<SELECT name="menu">
<OPTION selected value="#">Опция 1:</option>
<OPTION value="url1">185</option>
<OPTION value="url2">195</option>
</SELECT>
<SELECT name="menu1">
<OPTION selected value="#">Опция 2:</option>
<OPTION value="url3">65</option>
<OPTION value="url4">70</option>
</SELECT>
<INPUT type=submit>
</FORM>
url1 - заменить на свой вариант

Файл test1.php
PHP
1
2
3
4
5
6
7
8
<?php
ob_start();
$host  = $_SERVER['HTTP_HOST'];
$newurl1 = isset($_POST['menu']) ? $_POST['menu'] : '';
$newurl2 = isset($_POST['menu1']) ? $_POST['menu1'] : '';
$newurl= "http://$host/$newurl1/$newurl2";
header('Location: ' . $newurl);
?>
0
601 / 468 / 73
Регистрация: 22.01.2009
Сообщений: 1,180
Записей в блоге: 1
22.11.2012, 14:11
ob_start() можно убрать, он не нужен
1
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
22.11.2012, 14:14
На будущее - советую почитать Что означает предупреждение "headers already sent"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.11.2012, 14:14
Помогаю со студенческими работами здесь

POST запрос и redirect
Доброго времени суток господа . Пишу софт для автоизации и выполнения n-ных действий на сайте (youtube). Авторизацию реализовал , но вот с...

HTTP Redirect after async post
Возможно ли сделать редирект на асинхронный пост запрос указав в ответе код 301 и Location? Мне нужно редиректить на страницу логина если...

Есть AJAX код, который отправляет POST данные в php. Как их принять в php?
Всем привет! AJAX код отправляет post данные в php файл. Как принять эти post данные в php? Вот AJAX: ...

Как распарсить POST запрос с динамическими данными в WEB API?
Добрый день. У меня во вьюшке скрип генерирует заранее не известное кол-во данных, и потом посылает их пост запросом. Нашел статью где...

Php redirect
Ув. юзеры) имеется код(ниже кинул). Как сделать, чтобы успешно авторизованного юзера перенаправляло в admin.php? В этом коде выводится...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru