替代php中的isset(user_input)

时间:2016-01-19 09:32:57

标签: php validation isset

我想知道是否另一种方法来检查来自用户输入的变量是否已设置且不为null,此外(显而易见的选择)isset()。 在某些情况下,我们可能没有使用$ _POST来获取值,而是使用类似的自定义函数。 isset()不能用于函数调用的结果,因此必须使用另一种方法来执行相同的检查。现在,isset()验证了两件事:

  1. 值是否已设定。
  2. 值是否为null。但是,将变量赋值为空值($variable = NULL;)与获取空值之间存在一些差异,因为空输入字段。或至少我读过。
  3. 那么,有没有一种很好的方法可以在不使用isset()的情况下检查这两个要求?

4 个答案:

答案 0 :(得分:2)

函数返回值的等效值isset($var)func() === null

isset基本上进行!== null比较,如果测试变量不存在则不会抛出错误。这对于函数返回值来说不是问题,因为a)函数必须存在(或PHP将以致命错误退出)和b)函数总是返回一些东西,至少null 。所以你真正需要做的就是检查null,不需要isset

我在这里广泛地写了这篇文章:The Definitive Guide To PHP's isset And empty

除此之外,还取决于你想要检查的内容:

  • 测试是否通过GET / POST提交了密钥:isset($_POST['key'])
  • 测试是否有值以及是否为== false!empty($_POST['key'])
  • 测试它是否为非空字符串:isset($_POST['key']) && strlen($_POST['key'])
  • 可能是更复杂的验证:filter_input

答案 1 :(得分:0)

最好的方法是设置但是如果你坚持...尝试empty()strlen()功能检查它是否为空或字符串长度大于这么多字符。 strlen()返回传递给它的变量的数字长度。 empty()检查它是否包含字符或是否为空。使用empty()时,您必须满意,因为某些函数会返回0false,而这些函数不会被视为空。

if(!empty($var))....

OR

if(strlen($var)>2)...

答案 2 :(得分:0)

您也可以使用!empty()代替isset() 函数!empty()适用于isset()并检查任何字符串的值是否为空,0或任何空字符串。 每当我需要比较变量存在或其值时,我通常更喜欢!empty()

答案 3 :(得分:-1)

我在大多数情况下这样做:

$v = my_func();
if (isset($v) and $v) {
 ...
}