2012-10-23 20 views
1

我不想在我的数据库中导入空白/空格,空格,空值。所以出于这个原因,我想在导入数据库之前检查我的输入值。任何人都可以告诉我isset和空函数哪一个有利于检查输入值。这是我的代码。由于我应该使用哪个函数来检测表单POST中的空值?

$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..."; 
} 

回答

0

修复:

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

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

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..."; 
} 
1

isset是完全无用的,empty也许不在这里一个合适的选择。

值内$_POST(也$_GET$REQUEST)总是类型为字符串,所以isset总是回报true。此外,中emptyfalsenull和其它值的行为不发挥作用,这意味着empty检查只会拒绝:

  • 零长度字符串
  • 字符串"0"

这与您的代码似乎打算拒绝的内容不同,这将是:

  • 零长度字符串
  • 字符串完全空白组成

考虑使用trim($_POST['foo']) === ''作为条件来代替。

+0

感谢您的好评论。所以你告诉我,isset函数完全没用。你可以给我发送关于这个主题的任何文章链接 – user1493448

+0

@ user1493448:我在'$ _POST'和朋友*内部讨论数值时,告诉你'isset'完全没用*。这很容易从'isset'的文档中推导出来,并且这些值总是*字符串,您可以使用'var_dump'测试自己。 – Jon

+0

@ user1493448:另外,如果任何字段的值为“0”,您接受的答案(以及使用'empty'的任何其他解决方案)将给出错误,这在许多情况下可能有效。 – Jon

1

最好的方法可能是使用emptytrim。为什么修剪?它将从头到尾删除空格和行等。这意味着,当有人插入几个空格,但没有文字,该空间可以被移除,以便您可以检查empty

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

Isset()检查,如果一个变量的值,包括(产品嫁接,0或空字符串),但不是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()功能

-1

您可以纳入isNotEmpty功能

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

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

?>

  • 保存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..."; 
    } 
    

希望这有助于

+0

如果你把我的答案投下来,可否请你解释一下错误/如何改进? – Phil

相关问题