簡體   English   中英

為什么程序顯示錯誤:array_key_exists()?

[英]Why program show error with : array_key_exists()?

我想驗證表單寄存器並創建了 class UserValidator 並嘗試檢查用戶名字段是否存在。 在我看來一切都是正確的,但告訴我 2 個錯誤

Warning: array_key_exists() expects parameter 2 to be array, null given in C:\xampp\htdocs\class\index.php on line 22 Notice: username is not present in data in C:\xampp\htdocs\class\index. php 在第 24 行。

<?php

if(isset($_POST['submit']))
{
    $validation = new UserValidator($_POST);
    $errors =$validation->validateForm();
}



<?php
class UserValidator
{
    private $data;
    private $errors =[];
    private static $fields =['username', 'email'];

public function _construct($post_data)
{
    $this->data = $post_data;
}

public function validateForm()
{
    foreach(self::$fields as  $field)
    {
        if(!array_key_exists($field, $this->data))
        {
            trigger_error("$field is not present in data");
            return;
        }
    }
    $this->validateUsername();
    return $this->errors;
}


private function validateUsername()
{
    $val = trim($this->data['username']);
    if(empty($val))
        $this->addError('username', 'username cannot be empty');
else
{
    if(!preg_match('/^[a-zA-Z-0-9]{6,12}$/', $val))
        {
        $this->addError('username', 'username must me 6-12 characters');
        }
}


}

private function addError($key, $val)
{
    $this->errors[$key] = $val;
}

}

?>
 <div id="register">
     <h1>REJESTRACJA</h1>
        <form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">        
         <div class="row">
      <div class="col-25">
        <label for="loginRe">Login</label>
      </div>
      <div class="col-75">
        <input type="text" name="username" placeholder="Login...">
        <div class="error">
        <?php echo $errors['username'] ?? '' ?>
        </div>
      </div>
    </div>
        <div class="row">
      <div class="col-25">
        <label for="email">Email</label>
      </div>
      <div class="col-75">
        <input type="text" name="email" placeholder="Email...">
      </div>
    </div>
    <div class="button">
            <input type="submit" name="submit" value="Utwórz konto">
    </div>
    <div class="displayCenter">
    <div class="display">
    </div>
    </div>
    </form>
    </div>

$this->data是NULL,不是構造函數填寫的,構造函數聲明有錯別字,漏了一個_

public function __construct($post_data)
{
    $this->data = $post_data;
}

構造函數聲明有錯別字,請更正

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM