2016-08-18 6 views
0

У меня действительно странная проблема, которую я не могу решить, может ли кто-нибудь предложить решение? спасибо заранее :)

Я хочу передать полный URL в скрипт, скрипт будет проверять URL и делать мета обновления для перенаправления на него, поэтому предположим, мой сценарий является goto.php и я хочу это перенаправление:

http://www.google.com/?name=david&param=gender

Так я ввожу это в моем браузере:

www.mydomain.com/goto.php?u=http%3A%2F%2Fwww.google.com%2F%3Fname%3Ddavid%26param%3Dgender 

Но мой goto.php сценарные:

http://www.google.com/?name=david¶m=gender 

Как вы можете видеть, "&" пропущена, вот код моего goto.php:

<!DOCTYPE html> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>checking</title> 
<meta name="robots" content="noindex,nofollow" /> 
</head> 
<body> 
<?php echo $_GET ['u'];?> 
</body> 
</html> 

хотя если добавить

<meta http-equiv="refresh" content="0;url=<?php echo $_GET ['u'];?>" /> 

он работает в каком-то браузере , но в каком-то другом браузере он не будет работать, потому что $ _GET ['u'] не вернул действительный URL-адрес.

Еще раз спасибо за любое предложение.

ответ

0

выглядит как у вас есть проблемы с кодировок кодирования/декодирования. Каков результат вашего «php -i»?

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

Я просто дал ему еще одну попытку, и ваш сценарий хорошо. Проблема в том, что ваш URL-адрес не экранирован для HTML. Если вы посмотрите на источник своей страницы, вы поймете, что все выглядит хорошо.

Перед выходом в HTML вы должны уйти от всех амперсандов (&). Для этого используйте htmlspecialchars() или htmlentities().

http://php.net/manual/en/function.htmlspecialchars.php

<?php echo htmlspecialchars($_GET['u']); ?> 
+0

¶ показано в HTML как ... так что это должно быть экранировано =) – Ricardo

+0

спасибо, очень mcuh –

0

Пожалуйста, измените строку

<?php echo $_GET['u']; ?> 

к следующей строке

<?php echo urldecode($_GET['u']); ?> 
+0

спасибо за ответ, но как вы можете видеть на http://php.net/manual/en/reserved.variables.get.php, то $ _GET пары уже URL («Переменные GET передаются через urldecode().»), если я декодирую его еще раз, я получаю тот же результат. –