注意:未定义的索引:第15行的C:\ xampp \ htdocs \ Sites \ ooplr \ classes \ Validate.php中的密码?

问题描述 投票:2回答:4
<?php
require_once 'core/init.php';

if(INput::exists()) {
if(Token::check(Input::get('token'))) {

    $validate = new Validate();
    $validation = $validate->check($_POST, array(
        'username' => array('required' => true),
        'password' => array('required' => true)
    )); 

    if($validation->passed()) {
        //  Log user in
    } else {
        foreach($validation ->errors() as $error) {
            echo $error, '<br>';
        }
    }
}
}
?>

我正在尝试确保它通过我的验证页面说出用户名和密码是必需的

<?php
class Validate {
private $_passed = false,
      $_errors = array(),
      $_db = null;

public function __construct() {
  $this->_db = DB::getInstance();
}

 public function check($source, $items = array()) {
   foreach($items as $item => $rules) {
     foreach($rules as $rule => $rule_value) {

        $value = trim($source[$item]);
        $item = escape($item);

        if($rule === 'required' && empty($value)) {
          $this->addError("{$item} is required");
        } else if(!empty($value)) {
           switch($rule){
          case 'min';
            if(strlen($value) < $rule_value) {
              $this->addError("{$item} must be a minimum of {$rule_value} character.");
            }
          break;
          case 'max';
            if(strlen($value) > $rule_value) {
              $this->addError("{$item} must be a maximum of {$rule_value} character.");
            }
          break;
          case 'matches';
            if($value != $source[$rule_value]) {
              $this->addError("{$rule_value} must match {$item}");
            }
             break;
             case 'unique';
             $check = $this->_db->get($rule_value, array($item, '=', $value));
             if($check->count()) {
               $this->addError("{$item} already exists.");
             }
             break;
          }
      }
    }
  }

if(empty($this->_errors)) {
  $this->_passed = true;
}

return $this;
}

private function addError($error) {
  $this->_errors[] = $error;
}

public function errors() {
  return $this->_errors;
}

public function passed() {
  return $this->_passed;
}
}  

但是它一直显示此错误:

注意:未定义索引:输入密码C:\ xampp \ htdocs \ Sites \ ooplr \ classes \ Validate.php,第15行

php login username
4个回答
3
投票

[未定义索引:密码只能表示未声明$_POST['password'],这意味着您使用密码的HTML存在问题。


1
投票

尝试使用$validate->passed()代替$validation->passed()

$validate = new Validate();
$validation = $validate->check($_POST, array(
    'username' => array('required' => true),
    'password' => array('required' => true)
)); 

0
投票

我有同样的问题,我刚刚解决了这个问题:

<input type="Password" name="Password" id="Password" autocomplete="off"

为此:

<input type="Password" name="password" id="Password" autocomplete="off"

并且没有其他错误


0
投票

[html格式的“ name”属性与您的$ _POST []]不匹配要么您在表单中的“方法”字段未设置为“ POST”。

© www.soinside.com 2019 - 2024. All rights reserved.