php – $_SERVER不返回查询字符串

我只是试图存储用户数据库中查看的当前页面.页面加载时,我插入$_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.

更新W / PARTIAL SOLUTION:将sql输入更改为$_SERVER [‘QUERY_STRING’](不带REQUEST_URI)成功输入查询字符串.因此,它让我相信PHPMysqL正在从?之后的输入字符串中剥离所有内容.所以输入参数是正确的;结果刚被截断.

有谁知道为什么会这样?

解决方法:

不同的服务器将不同的$_SERVER全局变量传递给页面.我假设您使用的是Apache而不是Nginx,您可能需要检查是否在FASTCGI_ParaMS中定义了QUERY_STRING.

解决方案是像@hakre那样做,只看到哪个$_SERVER键有你想要的.

<?PHP
print '<pre>';
print_r($_SERVER);
print '</pre>';

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...