2012-10-23 25 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

相關問題