我已经在我的表单中定义了一个var,它会自动抓取所有参数,这样我就不必检查它们了。问题是我如何计算内部的值 HTTP_SERVER_VARS ['QUERY_STRING']?
当我做var_dump时,我看到字符串(0)“”,当我没有参数时,但当我这样做时,字符串(#),其中#是参数的数量。我已经尝试过count()但是无论我放了多少个参数,它都显示值为1。
这就是我的设置。
define('PHP_SELF', htmlentities($_SERVER['PHP_SELF']) . "?". $HTTP_SERVER_VARS['QUERY_STRING']);
这就是我如何使用它。
<form method="POST" action="<?= PHP_SELF ?>">
....
</form>
我的问题是,即使没有params,动作看起来像/page.php?我想检查参数,所以如果没有设置参数,那么我可以取出?标记。我该怎么做?
让我知道你明白我想说的是什么。
答案 0 :(得分:3)
查询字符串是包含问号的网址中的部分(例如?x=1
中的http://www.example.com/dir/file.php?x=1
)。您应该使用$_GET
数组而不是手动解析$_SERVER['QUERY_STRING']
变量。对于POST字段,请使用$_POST
。
如果你想隐藏查询字符串部分,如果它是空的,为什么不这样做呢?
define(PHP_SELF,
htmlentities($_SERVER['PHP_SELF'] .
($_SERVER['QUERY_STRING'] ? '?' . $_SERVER['QUERY_STRING'] : '')
));
请注意,我已移动htmlentities
的右括号以防止XSS与查询字符串对比。
答案 1 :(得分:1)
您可以使用:
if ($_SERVER['QUERY_STRING'] !== '')
$count = count(explode('&', $_SERVER['QUERY_STRING']));
else
$count = 0;
或者你可以这样做(更简单):
$count = count($_GET);