2012-10-04 94 views
0

我創建了一個非常簡單的登錄頁面,我在提交表單後驗證PHP上的用戶名和密碼。PHP - 如果條件語句被跳過,除非指定了else

我在驗證第一步是檢查用戶名和密碼不爲空,如果空我送用戶返回到登錄頁面:

$e = $_POST['email']; 
$p = $_POST['password']; 


if($e == '' || $p == '' || is_null($e) || is_null($p)){ 
    header('Location: login.php?e=missing'); 
} 

事實證明,在if語句檢查如果用戶名和密碼是空的只有工作,如果我添加一個else聲明:

$e = $_POST['email']; 
$p = $_POST['password']; 


if($e == '' || $p == '' || is_null($e) || is_null($p)){ 
    header('Location: login.php?e=missing'); 
}else{ 

    //more validation 
} 

說實話,我的代碼工作,我加入了else和問題解決了,但爲什麼??? 謝謝。

+0

我會考慮加入少許驗證 – Chris

+1

值得指出的,還有,你的第二個例子多了兩個檢查:對'$ e'和'$ p'的'is_null'功能瓦爾。 –

回答

4
$e = $_POST['email']; 
$p = $_POST['password']; 


if(trim($e) == '' || trim($p) == ''){ 
    header('Location: login.php?e=missing'); 
    exit(); // add this else it wont leave the page! 
}else{ 

    //more validation 
} 
+1

您也可以使用'empty()'函數來測試一個變量是否爲「空」。 –

+0

這是真的 - 沒有想到 - 會比=='' – Chris

+0

不是頭()應該退出一切以及? – multimediaxp

1
if($e == '' || $p == ''){ 
    header('Location: login.php?e=missing'); 
} 

您需要在標題行之後添加exit();否則,處理將繼續正常進行,並且所有其餘代碼都將運行。

0
$e = $_POST['email']; 
$p = $_POST['password']; 

if(!empty($e) && !empty($p)) 
{ 
    header('Location: login.php?e=missing'); 
    exit(); 
} 
else 
{ 
    //more validation 
} 
0
if($e == '' || $p == ''){ 
     header('Location: login.php?e=missing'); 
    } 

Rathen市的則是使用:

if(!isset($e) || !isset($p)){ 
    header('Location: login.php?e=missing'); 
    exit(); 
} 

它是因爲白色的空間,也可以使用TRIM()函數刪除空格和使用的exit() ;標題後必須使用*

1

您需要使用empty來檢查變量是否已設置,以及是否爲空。

$e = $_POST['email']; 
$p = $_POST['password']; 

if(empty($e) || empty($p))  { 
    header('Location: login.php?e=missing'); 
    exit; 
} 
else { 
//more validation 
}