Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Не работает Header Location


Автор: Rusman 28.6.2011, 14:50
Здравствуйте!

У меня следующая проблема:
есть скриптик go.php
Код

$url= urldecode($_GET['url']);
header("Location: ".$url);


Перехожу:
go.php?url=http%3A%2F%2Fwww.fin.perm.ru%2Fgoto%2F%3Ftype%3D1%26amp%3Bid%3D45

если убираю F%3 (знак вопроса), то редирект срабатыват, если оставлю так то скрипт вообще ничего не делает. даже если в него вписать дополнительные строчки вывода, он вообще никак не реагирует. В чем может быть проблема? пожалуйста, подскажите.

пробую так
Код

$url= urldecode($_GET['url']);
echo $url;

то выводит строку
http://www.fin.perm.ru/goto/?type=1&id=45

все норма.

Спасибо!

Автор: Gold Dragon 28.6.2011, 15:35
вообще-то не помешало бы разделить

"http://moysite.ru" + "/index.php" + "?" + "остаток"

т.е. примерно так
HTTP_HOST + SCRIPT_NAME + ? + urldecode(QUERY_STRING)

а переадресацию я делаю так
Код

header("HTTP/1.1 301 Moved Permanently");
header("Location: ".$url);


Автор: s0lman 28.6.2011, 16:11
И не помешает после header поставить die()

Автор: BlackRu 28.6.2011, 21:27
Кстати, еще можно так перенаправить, если уже был вывод echo  или например после выполнения какого-нибудь условия.

Код

print "<META http-equiv=\"refresh\" content=\"0; url=http://forum.vingrad.ru/index.php?show_type=forum&showtopic=333097">";

Автор: Gold Dragon 29.6.2011, 06:00
BlackRu, не самый лучший способ.. Перенаправление я так понимаю происходит при обработке кода. Ты же изначально закладываешь в страницу refresh

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)