微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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>';

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐