Я просто пытаюсь сохранить текущую страницу, которую пользователь просматривает, в БД. Когда страница загружается, я вставляю $_SERVER['REQUEST_URI'] . $_SERVER['QUERY_STRING']
в свою БД, но отображается только страница (например, index.php?
) без строки запроса (я убедился, что в URL-адресе есть строка запроса).
Я пытался $_SERVER['PHP_SELF']
с теми же результатами.
РЕДАКТИРОВАТЬ ДОБАВИТЬ:
Вот дамп $ _SERVER:
Array
(
. . .
[REQUEST_METHOD] => GET
[QUERY_STRING] => view=scores&yr=2010&wk=1
[REQUEST_URI] => /index.php?view=scores&yr=2010&wk=1
. . .
)
Таким образом, строка запроса присутствует в массиве, даже как часть REQUEST_URI. Так что мой запрос ...
mysql_query("insert into clickstream
(user_id, page)
values
(" . $_SESSION['user_id'] . ", '" . mysql_real_escape_string($_SERVER['REQUEST_URI']) . mysql_real_escape_string($_SERVER['QUERY_STRING']) . "');")
or die('mysql error: ' . mysql_error());
... на самом деле следует вставлять строку запроса дважды, а не раз!
Мысли
ДОБАВЛЕННАЯ МЫСЛЬ: Возможно ли, чтобы база данных MySQL отбрасывала все, начиная от ввода ?
? Поле varchar.
ОБНОВЛЕНИЕ W / ЧАСТИЧНОЕ РЕШЕНИЕ: Изменение ввода SQL на просто $_SERVER['QUERY_STRING']
(без REQUEST_URI) успешно введите строку запроса. Таким образом, это заставляет меня поверить, что либо PHP, либо MySQL убрали все из строки ввода после ?
. Таким образом, входные параметры были правильными; результат только что был усечен.
Кто-нибудь знает, почему это так?