Php $ _GET проблема (разрыв строки после знака амперсанда) - PullRequest
0 голосов
/ 20 ноября 2011

Я передаю зашифрованную строку в URL, а затем использую php $ _GET, чтобы получить ее, но у меня возникли некоторые проблемы, позвольте мне сначала написать URL, чтобы сделать его более понятным

http://localhost/marketplace/test.php?sortid=Cd2&V0reSzN$NBh^tjcF!%3CfsAAhIU%28%3C

если вы заметите, что у меня есть знак амперсанда в середине строки, поэтому, когда я повторяю $ _GET, значение после амперсанда прерывается, например

echo $_GET['sortid']; 

и результат, который я получаю, это Cd2, и после знака амперсанда он ничего не читает, проблема, которую я могу выяснить, заключается в том, что php будет читать все как другой параметр после знака '&' при использовании $ _GET

Но я понятия не имею, как это исправить

Спасибо

Ответы [ 2 ]

1 голос
/ 20 ноября 2011

Это происходит потому, что знак амперсанда имеет особое значение в строках запроса.Поведение, которое вы испытываете, совершенно нормальное и ожидаемое.

Если вы хотите передать параметры GET, содержащие специальные символы, вы должны правильно их кодировать, используя urlencode или, альтернативно, что-то вроде base64 encode.

0 голосов
/ 20 ноября 2011

при создании URL, замените амперсанд на% 26, это поможет. Кроме того, снова закодируйте вашу закодированную строку с помощью base64, тогда у вас нет амперсанда.

...