urldecode — PHP url-декодирование не работает

У меня есть URL-адрес, в котором параметр передачи urlencoded:

http://ipaddress/userandpass.php?user=test&pass=145Red#321OK

Чтобы расшифровать этот параметр, я попытался использовать urldecode and rawurldecode and utf8_decode(urldecode()) но без успеха.
Мой код выглядит так:

if(isset($_GET["pass"]) && $_GET["pass"] != ""){
$pass=urldecode($_GET["pass"]);
}

У вас есть идеи о том, как я могу решить эту проблему?

0

Решение

просто используйте

if(!empty($_GET["pass"]))
{
$pass= $_GET["pass"];
}

PHP — GET & Методы POST

http://www.test.com/index.htm?name1=value1&name2=value2
  • Метод GET создает длинную строку, которая появляется в журналах вашего сервера, в окне браузера Location:.
  • Метод GET ограничен отправкой до 1024 символов.
  • Никогда не используйте метод GET, если у вас есть пароль или другая конфиденциальная информация для отправки на сервер.
  • GET нельзя использовать для отправки двоичных данных, таких как изображения или текстовые документы, на сервер
  • Данные, отправленные методом GET, могут быть доступны с помощью QUERY_STRING переменная окружения.
  • PHP обеспечивает $_GET ассоциативный массив для доступа ко всей отправленной информации, используя метод GET.
1

Другие решения

Я не уверен, что вы пытаетесь это сделать, но я предполагаю, что ваш пароль может содержать все виды символов, включая те, которые обычно находятся в качестве ключевого элемента в строке запроса.

Хотя вы должны учитывать, что никогда не отправлять параметры, которые содержат конфиденциальные данные, в GET или URI в любом случае.

Но чтобы ответить на ваш вопрос:
Я бы сделал это так:

$parts = explode('?', $_SERVER['REQUEST_URI']);
array_shift($parts); //we dont want the first bit, only everything after the first questionmark
$qstring = implode('?', $parts);
parse_str($qstring, $parameters);
if (isset($parameters["pass"]) && $parameters["pass"] != "") {
$pass = urldecode($parameters["pass"]);
}
0

По вопросам рекламы [email protected]