2010-09-04 28 views
0

HTML NEW_PASSWORD:PHP:甚至仍在工作,如果不isset

<input name="new_password" type="password" maxlength="25" id="new_password" class="ModuleTextbox" onkeyup="var regex = new RegExp(/^.*(?=.{6,})(?=.*\d)(?=.*[[email protected]!¤&amp;/()_?,.-]).*$/m); if(regex.test(this.value)) { pwok.style.visibility = 'visible'; } else { pwok.style.visibility = 'hidden'; }" style="width:200px;" />&nbsp;<img id="pwok" src="ok.png" 
          alt="R" style="visibility: hidden;" /> 

PHP提交表單後:

foreach($_POST as $key => $value) { 
    $data[$key] = filter($value); 
} 
$pw_new = $data["new_password"]; 


    if(isset($pw_new)) { 
echo "LOL"; 
} 

即使我沒有寫在場上任何事情,它呼應的大聲笑,爲什麼?

+0

您還應該發佈'filter'函數的代碼。 – Sarfraz 2010-09-04 20:17:00

回答

3

由於輸入在那裏,表格仍然會發送,即使它是空的。所以即使它是空的,它仍然是集合,因爲它仍然存在於$_POST,所以它仍然會繼續到$data

您應該使用!empty()(這意味着「不爲空」)來代替:

if(!empty($pw_new)) { 
} 
2

即使你寫什麼,你的foreach將始終設置$data["new_password"],然後將其設置$pw_new,你可能想使檢查值而不是isset

if ($pw_new != '') { 
echo 'LOL'; 
} 
+0

我建議'空()'而不是比較空字符串。 – Andrew67 2010-09-04 20:37:09