PHP $ _GET ['word'] не работает, когда слово представляет собой строку, начинающуюся с символа '#' - PullRequest
1 голос
/ 27 ноября 2011

Я использую API визуализации Google для построения графика, а затем использую обработку событий, чтобы получить некоторую информацию при нажатии на график.

Когда я нажимаю на элемент, я открываю новое окно со следующим URL-адресом, который должен показывать результаты из скрипта под названием article.php

http://..../articles.php?word=nature&datetime=11-4-2011-8

articles.php начинается с

$word = $_GET['word'];
$datetime = $_GET['datetime'];

Когда я использую var_dump для отладки следующим образом:

var_dump($word);
var_dump($datetime);

Я получаю string(6) "nature" string(11) "11-4-2011-8", а остальная часть сценария работает.

Однако проблема, с которой я сталкиваюсь, заключается в том, что если слово имеет следующий формат:

word = "#someword"

тогда я все еще вижу следующий URL

http://...../articles.php?word=#nature&datetime=11-7-2011-5

но скрипт в article.php не работает. При использовании

var_dump($word);
var_dump($datetime);

вижу следующее:

string(0) "" NULL 

Я не понимаю, почему $_GET['word'] и $_GET['datetime] больше не работают, чтобы захватить слово и дату, переданные в URL, когда слово содержит "#" в качестве первого символа. Есть какие-нибудь указатели на то, что происходит и как я могу решить эту проблему?

Спасибо!

Ответы [ 2 ]

4 голосов
/ 27 ноября 2011

Чтобы символ # использовался в качестве значения параметра get, он должен быть закодирован в URL.Символ # используется в URL для представления именованного якоря или идентификатора в документе и не анализируется в массиве _GET.

2 голосов
/ 27 ноября 2011

Символ # обозначает начало фрагмента URL . Эти данные не будут декодироваться так же, как обычный параметр $_GET, если они вообще отправляются на сервер.

Литерал # в URL должен быть закодирован как %23 для правильной работы. Таким образом, ваш URL будет http://...../articles.php?word=%23nature&datetime=11-7-2011-5. Тогда var_dump($word); покажет string(7) "#nature"

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