Ошибка в go.php

HL
На сайте с 12.12.2012
Offline
118
651

Здравствуйте уважаемые форумчане. Столкнулся с проблемой, что файл редиректа go.php режит ссылку.

Пример ссылки: http://www.site.ru/talk/viewtopic.php?f=6&t=86731

Ссылка при проходе через файл: http://www.site.ru/talk/viewtopic.php?f=6

Почему-то режется кусок &t=86731

Листинг редиректа:

<?php

$url = isset($_REQUEST['url']) ? $_REQUEST['url'] : '';
if(preg_match('#(http?|ftp)://\S+[^\s.,>)\];\'\"!?]#i',$url)){
sleep(1);
//header("Location: $url");
echo "<div class=\"center\"><img class=\"warn\" src=\"http://www.site.ru/img/1.png\" alt=\"warn\" border=\"0\" height=\"45\" width=\"51\">Вы переходите на другой сайт.<br /> Для подтверждения перехода кликните по ссылке:<br /><a href=\"$url\">$url</a></div></body>
</html>";
exit();
}
?>

Подскажите пожалуйста, в чем может быть ошибка ? Код скрипта нашел на просторах тырнета.

Спасибо.

- Дорогой выкуп баннерных показов (https://goo.gl/Haxr87). Советую! - СеоПульт (https://seopult.ru/ref/0c1642776e7e1b04) + крауд-ссылки (https://goo.gl/3eXcqn) = успех - Проверенный CashBack сервис (https://goo.gl/mAIbxw). До 30%
vandamme
На сайте с 30.11.2008
Offline
675
#1

пользуюсь таким

<?php

if (isset($_SERVER['QUERY_STRING'])) Header('Location: '.$_SERVER['QUERY_STRING']);
?>
HL
На сайте с 12.12.2012
Offline
118
#2

vandamme, спасибо. Но хотелось бы вылечить тот код, который у меня уже есть. Сам с программированием на Вы и шепотом, поэтому очень боюсь что-то кардинально менять.

Скрипт стоит давно, работой доволен. Нетак давно мне его подключили на форум и сегодня заметил вот такую незадачу (((

siv1987
На сайте с 02.04.2009
Offline
427
#3

Потому что амперсанд считается другой параметр на ряду с url, а не часть параметра url. Используйте либо $_SERVER['QUERY_STRING'] (для go.php?http://site.ru/?t=1&t2) либо кодируйте амперсанды

дани мапов
На сайте с 06.09.2012
Offline
204
#4

В $_REQUEST['url'] будет httр://www.site.ru/talk/viewtopic.php?f=6 , а в $_REQUEST['t'] будет 86731. Правильно вам подсказали выше, надо использовать $_SERVER['QUERY_STRING']:


$url = isset($_SERVER['QUERY_STRING']) ? $_SERVER['QUERY_STRING'] : '';
$url = str_replace('url=', '', $url, );
if(preg_match('#(http?|ftp)://\S+[^\s.,>)\];\'\"!?]#iU',$url)){
sleep(1);
//header("Location: $url");
echo "<div class=\"center\"><img class=\"warn\" src=\"http://www.site.ru/img/1.png\" alt=\"warn\" border=\"0\" height=\"45\" width=\"51\">Вы переходите на другой сайт.<br /> Для подтверждения перехода кликните по ссылке:<br /><a href=\"$url\">$url</a></div></body>
</html>";
exit();
}
Написание и доработка скриптов (PHP, MySQL, JavaScript, jQuery) (/ru/forum/811046)
HL
На сайте с 12.12.2012
Offline
118
#5

дани мапов, протестировал. Теперь открывается просто белая страница.

siv1987:
Потому что амперсанд считается другой параметр на ряду с url, а не часть параметра url. Используйте либо $_SERVER['QUERY_STRING'] (для go.php?http://site.ru/?t=1&t2) либо кодируйте амперсанды

Урл через редирект имеет следующий вид:

http://www.mysite.ru/go.php?url=http://www.site.ru/talk/viewtopic.php?f=6&t=86731

А для подтверждения перехода просит кликнуть по урлу http://www.site.ru/talk/viewtopic.php?f=6

дани мапов
На сайте с 06.09.2012
Offline
204
#6

Уберите запятую перед второй скобкой, правильно так:

$url = str_replace('url=', '', $url);

HL
На сайте с 12.12.2012
Offline
118
#7

дани мапов, спасибо огромное :o Все заработало !!!

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий