Что будет, если два? после php url - PullRequest
0 голосов
/ 10 августа 2011

Что произойдет, если URL-ссылка будет такой

http://abc.com/123.php?p=1?source=yahoo&key=56

Может ли 123.php получить все параметры?

Ответы [ 5 ]

2 голосов
/ 10 августа 2011

В PHP $ _GET будет содержать следующее (результат var_dump ($ _ GET) )

array(2) { ["p"]=> string(14) "1?source=yahoo" ["key"]=> string(2) "56" }

Если вы хотите использовать знак вопроса (или другие зарезервированные символы), используйте urlencode

0 голосов
/ 10 августа 2011

Из RFC 1738 - унифицированные указатели ресурсов (URL) :

только буквенно-цифровые символы, специальные символы $-_.+!*'(), и зарезервированные символы, используемые для их зарезервированных целей, могут использоваться без кодировки в URL-адресе.

Символ ? является зарезервированным символом. Поскольку указанный вами URL-адрес не использует его в зарезервированных целях (отделяя «путь» от «searchpart»), этот URL-адрес недопустим, и вам не следует полагаться на какое-либо конкретное поведение.

Кодируйте символ ? и убедитесь, что URL-адрес допустим, если вы хотите предсказуемое поведение.

0 голосов
/ 10 августа 2011

p исчезнет, ​​вы должны сделать

$url = 'http://abc.com/123.php?'.urlencode('p=1?source=yahoo&key=56');
0 голосов
/ 10 августа 2011

Проверьте сами:

print_r($_GET);

Я проверил это и получил:

Массив ([p] => 1? Source = yahoo [key] =>56)

Если вы контролируете строку, добавленную к URL-адресу, используйте urlencode .

0 голосов
/ 10 августа 2011

Нет. Я не думаю, что это правильная строка запроса.

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