2015-11-11 2 views
0

Я пытаюсь перенаправить на URL-адрес, который передается как параметр с другой страницы.windws.location redirect to URLencoded link

<?PHP $location = urlencode($_GET['url']); ?> 

    <script> 
    window.location = ("<?PHP echo $location; ?>"); 
    </script 

проблема вместо того, чтобы перенаправлять на внешний сайт, он считает, что строка в кодировке URL является имя файла относительно текущего каталога.

Как я могу перенаправить его в нужное место?

+2

Вы можете указать примерное значение для '$ location'? Отсутствует протокол? –

+0

строка axample http% 3A% 2F% 2Fexample.com% 3Faaa% 3Dbbb –

ответ

1

вы должны добавить http:// до вашего URL

Редактировать

Я заметил, что вы упомянули вы получите строку, как это: http%3A%2F%2Fexample.com%3Faaa%3Dbbb

Таким образом, вы можете расшифровать эту строку:

$location = urldecode($_GET['url']); ?> 
0

Я бы предложил использовать метод направления заголовка php:

<?php 
    header('Location: '.$_GET['url']); 
?> 

См: http://php.net/manual/en/function.header.php ... для более подробной информации.

+0

php заголовок вызывает ту же проблему –

+0

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

+0

Просто протестировал его и работал нормально. testcript.php? url = http: //google.com Когда я посещаю php-файл, он перенаправляет меня на google :) –

0

Снимите urlencode() и обеспечить URL начинается с http://

<?PHP $location = $_GET['url']; ?> 
    <script> 
    window.location = ("<?PHP echo $location; ?>"); 
    </script> 

Или:

<?php 
$location = $_GET['url']; 
header("Location: $location"); 
?> 
0

Прежде всего, вы должны проверить, переданная URL фактически является URL, а не кто-то пытается для внедрения JS на ваш сайт.

if(filter_var($_GET['url'], FILTER_VALIDATE_URL) !== false) { 
    header("Location: " . filter_var($_GET['url'], FILTER_VALIDATE_URL)); 
} 

//Alternatively using JS 
if(filter_var($_GET['url'], FILTER_VALIDATE_URL) !== false) { 
    echo('<script> 
    window.location = ("' . filter_var($_GET['url'], FILTER_VALIDATE_URL) . '"); 
    </script>'); 
}