gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-10-31 23:09:35 25 4
gpt4 key购买 nike

我只是想将用户正在查看的当前页面存储在数据库中。当页面加载时,我插入 $_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/PARTIAL SOLUTION:将 SQL 输入更改为 just $_SERVER['QUERY_STRING'](没有 REQUEST_URI)成功输入了请求参数。因此,这让我相信 PHP 或 MySQL 正在? 之后的输入字符串中剥离所有内容。所以输入参数是正确的;结果被截断了。

有人知道为什么会这样吗?

最佳答案

不同的服务器向页面传递不同的$_SERVER 全局变量。我假设您使用的是 Apache 而不是 NGINX,您可能需要检查 QUERY_STRING 是否在 FASTCGI_PARAMS 中定义。

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

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

关于php - $_SERVER 不返回查询字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7586863/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com