2017-04-08 182 views
1

我想創建一個PHP反對方向表單驗證腳本,但我遇到了一個問題。每當我檢查我的字段爲空或不是,劇本總是返回消息說他們,即使我的字段是不是在提交空。我不明白我做錯了什麼。這裏是我的代碼:域總是返回空

HTML

<form action='' method='POST'> 
<label>Full Name</label> 
<input type='text' placeholder='Full Name*' name='name'> 
<label>Email</label> 
<input type='email' placeholder='Email*' name='email'> 
<label>Password</label> 
<input type='password' placeholder='Password*' name='password'> 
<input type='submit' value='Sign Up!' name='registerBtn'> 
</form>"; 

PHP

<?php 
    class CreateUser 
    { 
     /*Declare variables*/ 
     public $errors; 

     public function __construct(){ 
      /*Initialize array of errors*/ 
      $this->errors = array("empty_err"=>""); 
     } 

     /*Function that checks if fields are empty*/ 
     public function checkEmpty($valArr){ 
      foreach ((array)$valArr as $value=>$keys){ 
       if (empty($valArr[$keys])){ 
        $this->errors["empty_err"] = "All fields are required."; 
       } 
      } 
     } 

    } 

    $user = new CreateUser(); 

    if (isset($_POST["registerBtn"])){ 
     $user->checkEmpty($_POST["registerBtn"]); 

    } 
?> 
+0

'$ _POST [「registerBtn」]'不是數組,它將是一個字符串。你的意思是循環'$ _POST'數組嗎?如果你還沒有,把'error_reporting(E_ALL); ini_set('display_errors',1);'在頁面頂部。 – Rasclatt

回答

1

1.首先改變

更改爲:

$user->checkEmpty($_POST["registerBtn"]); 

此:

$user->checkEmpty($_POST); 

2.第二個變化

更改爲:

foreach ((array)$valArr as $value=>$keys){ 
    if (empty($valArr[$keys])){ 

此:

foreach ((array)$valArr as $keys => $value){ 
    if (empty($valArr[$keys])){ 
+0

非常感謝您的回答。該解決方案有效,但爲什麼我們必須切換$ value和$ keys? – user2896120

+0

因爲你所檢查的''上$ valArr [$鍵] empty'''那裏$ keys'應該是'index'和'$ value'應該是對指數 –

+0

值那麼$值始終是索引值? – user2896120