2016-08-01 1 views
0

Ich konvertiere meinen Formularüberprüfungscode in Funktion, aber Problem ist, dass es Fehler Undefined Index von $confirm Variable gibt, die bereits definiert ist und auch bestätigen, dass das Kennwort nicht funktioniert.Undefinierter Index in Funktion und bestätigen Sie das Kennwort funktioniert nicht

Funktion

function formValidation($action,$confirm){ 
    $result = ""; 
    $input = $_POST[$action]; 
    $confirm = $_POST[$confirm]; 
    // For Email Validation 
    $find = 'email'; 
    $path = $action; 
    $pos = strpos($path,$find); 
    if(empty(user_input($input))){ 
     $result = "$action is missing"; 
    }elseif($pos !== false){ 
     $email = filter_var($input, FILTER_SANITIZE_EMAIL); 
     if(!filter_var($email, FILTER_VALIDATE_EMAIL)){ 
      $result = "Email invalid format"; 
     } 

    }elseif($confirm !== $_POST['password']){ 
     $result = "password is not confirm"; 
    } 
    return $result; 
} 

Und es gibt eine Möglichkeit, Funktion eine Zeit nennen und es checkx alle Felder und geben Fehler

Auslöser

$email_err = $password_err = $username_err = $confirmPWD_err = ""; 
if(isset($_POST['submit'])){ 
    $email_err = formValidation('prd_email',''); 
    $password_err = formValidation('password',''); 
    $username_err = formValidation('username',''); 
    $confirmPWD_err = formValidation('password','confirm'); 
} 

HTML

<form method="post"> 
    <div class="form-group"> 
     <input class="form-control" placeholder="username" name="username" type="text" /> 
      <?php echo $username_err ?> 
    </div> 
    <div class="form-group"> 
     <input class="form-control" placeholder="email" name="prd_email" type="text" /> 
     <?php echo $email_err ?> 
    </div> 
    <div class="form-group"> 
     <input class="form-control" placeholder="password" name="password" type="password" /> 
     <?php echo $password_err ?> 
    </div> 
    <div class="form-group"> 
     <input class="form-control" placeholder="Confirm Password" name="confirm" type="password" /> 
     <?php echo $confirmPWD_err ?> 
    </div> 
    <input type="submit" class="btn btn-success" name="submit" value="submit" /> 

</form> 
+1

Standard als null setzen müssen 'formValidation ($ action = null, $ confirm = null)' – Saty

+0

funktioniert nicht 'Funktion formValidation ($ action = null, $ confirm = null) {' –

+1

probiere das auch aus 'elseif ($ confirm && $ confirm! == $ _POST [' password '])' statt 'elseif ($ confirm! == $ _POST [' password ' ]) ', dies neben der' Funktion formValidation ($ action, $ confirm = null) ' –

Antwort

1

Versuchen Sie das, funktioniert es für Sie?

function formValidation($action,$confirm = null){ 
    $result = ""; 
    $input = $_POST[$action]; 
    if($confirm){$confirm = $_POST[$confirm];} 
    // For Email Validation 
    $find = 'email'; 
    $path = $action; 
    $pos = strpos($path,$find); 
    if(empty(user_input($input))){ 
     $result = "$action is missing"; 
    }elseif($pos !== false){ 
     $email = filter_var($input, FILTER_SANITIZE_EMAIL); 
     if(!filter_var($email, FILTER_VALIDATE_EMAIL)){ 
      $result = "Email invalid format"; 
     } 
    }elseif(!empty($confirm) && $confirm !== $_POST['password']){ 
     $result = "password is not confirm"; 
    } 
    return $result; 
} 

und rufen Sie die Funktion wie diese

if (isset($_POST['submit'])) { 
    $email_err = formValidation('prd_email'); 
    $password_err = formValidation('password'); 
    $username_err = formValidation('username'); 
    $confirmPWD_err = formValidation('password', 'confirm'); 
}