2014-09-12 117 views
-4

我一直在搞清楚如何做到這一點,但它似乎沒有工作。isset()函數總是返回true

我對錶單代碼:

<form name="register" method="POST" action="php\reg.php"> 
    <label>Email:</label> 
    <input type="email" name="email"/> 
    . 
    . 
    . 
</form> 

代碼爲 「reg.php」 文件:

if (isset($_POST['email'])) { 
    echo "success!"; 
} else { 
    echo "empty!"; 
} 
?> 

問題是,每當我在電子郵件文本框中輸入與否,isset函數始終返回真實值。我該如何解決這個問題?

+3

如果你提交*表單,那麼是的,'$ _POST ['email']'將永遠是* set *。它的值是否爲空字符串是一個不同的主題。 – deceze 2014-09-12 10:51:43

回答

4

所有答案將告訴您如何使用isset()empty()檢查表單值是...壞。使用filter functions之一來檢查是否存在POST/GET/COOKIE變量並驗證或消毒它。這裏有一個例子:

$email = filter_input(INPUT_POST, "email", FILTER_VALIDATE_EMAIL); 
if ($email === NULL) { 
    die("Email field not present in form"); 
} elseif ($email === FALSE) { 
    die("Email is present but its value is invalid"); 
} 

注:empty()功能有疑難雜症,除非你確切地瞭解它做什麼我不會建議使用它的表單驗證:它對於所有falsy值返回true 。這意味着0被認爲是這在某些情況下通常是可接受的值。例如(壞的):

if (empty($_POST["number_of_children"])) { 
    // triggers even when user enters 0 
    die("number of children field is empty"); 
} 
-1
<?php 
if (isset($_POST['email']) && $_POST['email'] != "") { 
echo "success!"; 
}else{ 
echo "empty!"; 
} 
?> 

嘗試這種方式

3

isset()檢查的值設置,所以它是真實的,即使該值爲空字符串。使用empty()

if (empty($_POST['email']) == false) { 
    echo "success!"; 
}else{ 
    echo "empty!"; 
} 
3
<?php 
if (!empty($_POST['email'])) { 
echo "success!"; 
}else{ 
echo "empty!"; 
} 
?> 
0

嘗試,如果變量聲明爲這 -

<?php 
if (!empty($_POST['email'])) { 
    echo "success!"; 
}else{ 
    echo "empty!"; 
} 
?> 
0

空和/或空字符串仍設置。

$ _POST包含您的值的空字符串,isset()返回true。使用空()或添加=「」你如果condition.try此:

if (!empty($_POST['email'])) 
0

嘗試使用empty()函數來檢查是否有任何電子郵件歸檔$ _POST數組。 根據您的代碼示例代碼如下:

<?php 
if (isset($_POST['email']) && !empty($_POST['email'])) { 
    echo "success!"; 
} else { 
    echo "empty!"; 
} 
?> 
+1

不要同時使用'isset'和'empty',這是毫無意義的。只是'!空'在這裏就可以做得很好。 – deceze 2014-09-12 10:54:46