2010-08-22 3 views
0

У меня есть http://mysite.com/go.php?site=http://somesite.com/main/?s=12&action=loadпростой PHP мета редирект скрипт не работает

<?php 
$url = $_GET['site']; 

echo "<meta http-equiv=\"refresh\" content=\"0;url=" . $url . "\">"; 

однако, он принимает меня http://somesite.com/main/?s=12, который не загружается.

как сделать это пойти http://somesite.com/main/?s=12&action=load

+1

Исправление: нет 'мета переадресовывает' в PHP. Это глупое перенаправление HTML. –

ответ

0

[EDIT]: Новое решение

Это работает как шарм. Я тестировал свою машину.

$url = urldecode(substr(http_build_query($_GET),5)); 
echo "<meta http-equiv=\"refresh\" content=\"0;url=" . $url . "\">"; 

Старое решение (не работает)
Измените код следующим образом:

$url = $_GET['site']; 
echo "<meta http-equiv=\"refresh\" content=\"0;url=" . urlencode($url) . "\">"; 
+0

Это не решит проблему: сам URL уже неправильно закодирован. –

+0

@Pekka, теперь я изменил код. – shamittomar

4

Вы должны urlencode() в URL вы передаете как site переменная заранее (т.е. при создании ссылки go.php).

Как примечание стороны, если это единственное, что ваши страницы выхода, то почему бы не использовать

header("Location: ".$url); 

?

Он выпустит заголовок 302 Found браузеру, сообщая ему, чтобы он следовал за новым местоположением, вместо вывода HTML (который в любом случае был поврежден при выходе без правильной структуры страницы).

0

Вам нужно закодировать параметр вы проходящий параметр site. Вы можете сделать это, используя urlencode() в PHP или encodeURI() в javascript.

Так что делает что-то вроде:

http://mysite.com/go.php?site=http%3a%2f%2fsomesite.com%2fmain%2f%3fs%3d12%26action%3dload 

Теперь в PHP, вы можете сделать:

<?php 
header("Location: ".$_GET['site']); 
?> 
Смежные вопросы