我应该使用哪个函数来检测表单POST中的空值?

时间:2012-10-23 10:28:08

标签: php isset string

我不想在我的数据库上导入blank / empty,space,null值。因此,我想在导入数据库之前检查输入值。请任何人都可以告诉我isset和empty函数哪一个对检查输入值有好处。这是我的代码。感谢

$required = array('login', 'password', 'confirm', 'name', 'phone', 'email');

$error = false;
foreach($required as $field) {
  if (empty($_POST[$field])) {
    $error = true;
  }
}

if ($error) {
  echo "All fields are required.";
} else {
  echo "Proceed...";
}

7 个答案:

答案 0 :(得分:1)

在这种情况下empty更有意义,因为它还会检查字符串是否为空。 isset只检查它是否已定义。您可能还想修剪输入。

答案 1 :(得分:1)

$required = array('login', 'password', 'confirm', 'name', 'phone', 'email');

$error = false;
foreach($required as $field) {
  if (empty($_POST[$field]) || strlen(trim($_POST[$field])) == 0) {
    $error = true;
  }
}

if ($error) {
  echo "All fields are required.";
} else {
  echo "Proceed...";
}

答案 2 :(得分:1)

isset完全没用,empty可能不适合这里。

$_POST(以及$_GET$REQUEST)中的值始终以字符串形式输入,因此isset始终返回{{ 1}}。此外,trueempty和其他此类值的false行为不会发挥作用,这意味着null检查只会拒绝:

  • 零长度字符串
  • 字符串empty

这与您的代码似乎要拒绝的内容不同,后者将是:

  • 零长度字符串
  • 完全由空格组成的字符串

请考虑使用"0"作为条件。

答案 3 :(得分:1)

最好的方法可能是使用emptytrim。为什么修剪?它将从开头和结尾删除空格和线等。这意味着,当有人插入一些空格但没有文字时,可以删除空格,以便检查empty

if(empty(trim($foo))) 
{
    // It is empty!
}

答案 4 :(得分:1)

Isset()检查变量是否包含值(Flase,0或Empty string),但不是NULL。
如果var存在则返回TRUE;否则为FALSE。

empty()函数检查变量是否为空值空字符串,0,NULL或False。如果var具有非空和非零值,则返回FALSE。

示例:

$var = 0;

// Evaluates to true because $var is empty
if (empty($var)) {
echo '$var is either 0, empty, or not set at all';
}


// Evaluates as true because $var is set
if (isset($var)) {
echo '$var is set even though it is empty';
}

The source

在您的情况下,您可以使用empty()功能

答案 5 :(得分:0)

修复它:

foreach($required as $field) 
{
   $val = trim($_POST[$field];
   if (empty($val)) 
   {
      $error = true;
   }
}

答案 6 :(得分:-1)

您可以合并 isNotEmpty 功能

<?php
function isNotEmpty($input){
    $strTemp = trim($input);

    if($strTemp !== ''){
       return true;
    }
    return false;
}

&GT;

  • 将isNotEmpty保存为'isnotempty.php',以便将来引用它。

    include 'isnotempty.php';
    $error = false;
    foreach($required as $field) {
      if (!(isNotEmpty($_POST[$field]))) {
        $error = true;
      }
    
    if ($error) {
      echo "All fields are required.";
    } else {
      echo "Proceed...";
    }
    

希望这有帮助