[英]PHP Form Validation Error
我之前從StackOverflow獲得了很大的幫助,但是我還有另一個問題。
這是什么總是會給出我沒有完成所有字段的錯誤。
這是我的表單函數:
// Function with HTML to display form
function FormDisplay () {
echo '<form action="MyRegister.php" method="post">';
echo 'Username:';
echo '<input type="text" name="username" maxlength="60"><br />';
echo 'Password:';
echo '<input type="password" name="password" maxlength="60"><br />';
echo 'Confirm Password:';
echo '<input type="password" name="password_confirm" maxlength="60"><br />';
echo '<input type="submit" name="submit" value="Register"><br />';
echo '</form>';
}
需要注冊表格時將調用此函數
這是驗證用戶輸入的代碼:
// Checks for field completion
function FieldComplete($user, $password, $password_confirm) {
if (!isset($user, $password, $password_confirm) &&
$user && $password && $password_confirm != "" || " ") {
return false;
} else {
return true;
}
}
// Validate fields using isset and FieldComplete (see above)
if(isset($_POST['submit'])){
$username_original = $_POST["username"];
$password_original = $_POST["password"];
$password_confirm_original = $_POST["password_confirm"];
$IsComplete = FieldComplete($username_original, $password_original, $password_confirm_original);
if(!$isComplete){
FormDisplay();
echo "* You did not complete all the required fields." . "<br />";
}
}else{
//display the form
FormDisplay();
}
因此,這將正確顯示表單,並且我的所有其他驗證均正常運行(此處未顯示)。
我不確定發生了什么問題,自從我上次訪問這里以來(大約3-4小時前),我已經仔細檢查了語法和所有內容
贊賞反饋。
-ethan17458
如評論中所述,您的條件不正確。 更改為以下內容:
if(!isset($user,$password,$password_confirm) || trim($user)=='' || trim($password)=='' || trim($password_confirm)==''){
您還具有$IsComplete
和$isComplete
。 這些與區分大小寫的PHP不同。
簡化它並擺脫“ isComplete”:
if(FieldComplete($username_original,$password_original,$password_confirm_original)){
FormDisplay();
//...
您過於復雜的驗證...
對於簡單的“是否已實例化我的變量”檢查, isset()
很棒。但是它將給出空值和0值的誤報。
下面的示例使用空白和修剪。 修剪將刪除字符串末尾的所有空格,而空白將檢查其是否為“”,null,0等。
希望能幫助到你。
// Checks for field completion
function FieldComplete($user, $password, $password_confirm)
{
if (empty(trim($user)) || empty(trim($password)) || empty(trim($password_confirm)))
{
return false;
}
else
{
return true;
}
}
FieldComplete()將始終返回false,因為:
if (!isset($user, $password, $password_confirm) &&
$user && $password && $password_confirm != "" || " ")
由於最后一個邏輯“或”,將始終為true:
|| " "
如果要驗證$ user,$ password和$ password_confirm是否都已設置,非空白且不是單個空格,則需要:
if (!isset($user, $password, $password_confirm) || $user == ''
|| $user == ' ' || $password == '' || $password == ' '
|| $password_confirm == '' || $password_confirm == ' ')
盡管您可能追求的是:
if (!isset($user, $password, $password_confirm) ||
trim($user) == '' || trim($password) == '' || trim($password_confirm) == '')
這將確保所有三個都被填充,而不僅僅是空白。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.