2

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

Login.ctpのコード

ログイン

<?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']; false を返します。} } ?>

3.コントローラーファイル

<?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 を使用しないように勧めています。どんな助けでも大歓迎です

4

1 に答える 1

1

不正なオフセットタイプは、オブジェクトまたは配列を使用して配列にインデックスを付けようとしたことを意味します。

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

コードをチェックして、ユーザー入力(1つの値だと思っていても値の配列である可能性があります)を取得し、値だけを期待する関数で使用した可能性のある場所を確認します。

そのCake内部関数が値を予期し、それを配列のオフセットとして使用しようとした場合、このメッセージが表示されます。

Obs

(リテラル文字列値ではなく)パラメーターを渡すコード内の唯一の場所は次のとおりです。

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

$ this-> data ['User']でvar_dumpを実行し、その中に何が含まれているかを確認します。おそらく配列であり、$ this-> data['User']['id']だけを抽出する必要があります。わかりません。 、私はケーキでそれほど遊んだことがありません。

于 2012-05-30T13:05:13.843 に答える