Ограничение на длину символа $ _GET? - PullRequest
3 голосов
/ 26 мая 2011

У меня есть переменная, которая состоит из

  // The First Page (hello.php)

 $a = 'goto.php?a_56=63525588000&url=http://www.example.com/site/DISC+cUSTOMc+Studio+24+-               +Windows/1142766.p?
       id=1218224802931&usi=1142766&cmp=RMX&
       ky=2crslw0k9ZOM0ciu2rqi4NsYY7eQnnEyP';

 // The Second Page (goto.php)
 $r = $_GET['url'];

 echo $r; 

//http://www.example.com/site/Disc cCustomc Studio 8 - Windows/1142766.p?id=1218224802931

Почему она отключается?

Ответы [ 4 ]

3 голосов
/ 26 мая 2011

Это не проблема длины, это потому, что вы хотите, чтобы один из ваших параметров GET (url в данном случае) содержал символ &. Вам необходимо urlencode этот символ, иначе он будет интерпретирован как другой параметр GET в запросе, а не как часть параметра url.

Когда urlencoding, & станет %26, и ваша строка запроса станет такой,

goto.php?a_56=63525588000&url=http://www.example.com/site/DISC+cUSTOMc+Studio+24+-+Windows/1142766.p?id=1218224802931%26usi=1142766%26cmp=RMX%26ky=2crslw0k9ZOM0ciu2rqi4NsYY7eQnnEyP
3 голосов
/ 26 мая 2011

Поскольку & указывает конец пары ключ / значение в строке запроса.

Используйте urlencode для подготовки данных для включения в строку запроса.

3 голосов
/ 26 мая 2011

Амперсанд используется для разделения параметров во внешней строке запроса.Вам нужно будет URL-кодировать его, если вы хотите использовать его в параметре GET.

3 голосов
/ 26 мая 2011

Он обрезается, потому что он обрабатывает & в вашем параметре url как фактический разделитель параметров GET, а это не так.

Вам необходимо использовать urlencode () для кодированияваш URL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...