如何计算HTTP_SERVER_VARS ['QUERY_STRING']内的值

时间:2011-10-26 20:44:53

标签: php

我已经在我的表单中定义了一个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?我想检查参数,所以如果没有设置参数,那么我可以取出?标记。我该怎么做?

让我知道你明白我想说的是什么。

2 个答案:

答案 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);