我只是试图存储用户在数据库中查看的当前页面。当页面加载时,我将$_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 DB从输入中除去所有内容,超出?
?该字段是varchar。
UPDATE W /部分解决:的SQL输入更改为只是$_SERVER['QUERY_STRING']
(不REQUEST_URI)成功地输入查询字符串。因此,它导致我相信PHP或MySQL 是剥离了?
之后的输入字符串中的所有内容。所以输入参数是正确的;结果刚刚被截断。
有谁知道为什么这可能是这种情况?
你测试过var_dump($ _ SERVER);'必须提供什么吗? – hakre
有趣的是,您是否检查过.htaccess的存在? –
另请注意,POST请求通常不会与'QUERY_STRING'一起提供。 (否则,这是一个不太可能的错误,因为CGI规范规定了它带有参数的GET请求。) – mario