Warnin: Недопустимый тип смещения пришел по щелчку входа в PHP

Я создал простую форму входа в систему с помощью Cake Php.Когда я нажимаю кнопку «Войти», появляется одно предупреждение

Illegal offset type [CORE\Cake\Model\Model.php, line 2734 

Я использую ссылку в качестве ссылки http://bakery.cakephp.org/articles/SeanCallan/2007/04/17/simple-form-authentication-in-1-2-xx

Код входа в систему.

Авторизоваться

 <?php echo $this->Form->create('User', array('action' => 'login'));?> <?php echo $this->Form->input('username');?> <?php echo $this->Form->input('password');?> <?php echo $this->Form->submit('Login');?> <?php echo $this->Form->end(); ?> 

2. Модальный файл

find (array ('username' => $ data ['username'], 'password' => md5 ($ data ['password'])), array ('id', 'username')); if (empty ($ user) == false) return $ user ['User']; return false; }}?>

Файл 3.controller

 <?php App::uses('AppController', 'Controller'); class UsersController extends AppController { var $name = "Users"; var $helpers = array('Html', 'Form'); var $components = array("Auth"); function index() { } function beforeFilter() { $this->__validateLoginStatus(); } function login() { if(empty($this->data) == false) { if(($user = $this->User->validateLogin($this->data['User'])) == true) { $this->Session->write('User', $user); $this->Session->setFlash('You\'ve successfully logged in.'); $this->redirect('index'); exit(); } else { $this->Session->setFlash('Sorry, the information you\'ve entered is incorrect.'); exit(); } } } function logout() { $this->Session->destroy('user'); $this->Session->setFlash('You\'ve successfully logged out.'); $this->redirect('login'); } function __validateLoginStatus() { if($this->action != 'login' && $this->action != 'logout') { if($this->Session->check('User') == false) { $this->redirect('login'); $this->Session->setFlash('The URL you\'ve followed requires you login.'); } } } } ?> 

Почему это произошло. Я новичок в этом. Некоторые разработчики в PHP чате предлагают мне не использовать этот Cake PHP. Любая помощь приветствуется

Недопустимый тип смещения означает, что вы пытались использовать объект или массив для индексации массива:

 $x = stdClass; $a = array(1,2,3,4); $a[$x]; // illegal offset type 

Проверьте свой код на возможные места, где вы взяли пользовательский ввод (который может быть массивом значений, даже если вы считали это всего лишь одним значением) и использовал его в некоторой функции, которая ожидала только значения.

Если эта внутренняя функция Cake ожидала значения и пыталась использовать ее как смещение массива, это сообщение появится.

Obs

Единственное место, которое я заметил в вашем коде, который передает параметр (а не буквальные строковые значения), находится здесь:

 $this->User->validateLogin($this->data['User'])) 

Сделайте var_dump на $ this-> data ['User'] и посмотрите, что в нем, возможно, это массив, и вы должны были извлечь только $ this-> data ['User'] ['id'] Я не знаю , я не так много играл с Cake.