1

このCakephp Cookieは常に自動的に削除されることを確認しましたが、うまくいきません。それはまさに私が探していたものではありません。

自動ログインが使用する Cookie が削除されています。

これが何をしたかです:

    public function login( ) {
    if ($this->Auth->user('id')) {
        $this->redirect(array('action' => 'dashboard'));
    }

    if ($this->request->is('post')) {
        if($this->request->data['User']['auto_login']):
            $this->AutoLogin->write($this->request->data['User']['email'],
            $this->request->data['User']['password']);
            endif;
        if ($this->Auth->login( )) {
            //$this->redirect(array('controller' => 'users', 'action' => 'edit'));
            return $this->redirect($this->Auth->redirect( ));
        }
        else 
        {
            $this->Session->setFlash(__('Username and Password is incorrect'), 'default', array( ), 'auth');
        }
    }

    else {
        if($this->AutoLogin->read()):
            $AllData = $this->AutoLogin->read();
            $AllData['username'] = 'email';
            $AllData['password'] = 'password';
            $check = $this->User->find('first', array('username' => 'email', 'password' => 'password'));
            if($check):
                $this->Auth->user($check);
                $this->Auth->redirect();
            endif;
            $this->redirect(array('action' => 'login'));
        endif;
    }

それはクッキーを設定し、あらゆることを行います!

しかし、ブラウザを終了すると、消えてしまいます! はい、さまざまなブラウザで試し、ブラウザの設定がそれを行っているかどうかも確認しました。

私のAppControllerはロード中です:

public $components = array('AutoLogin','Auth' => array('autoRedirect' => false), 'Cookie', 'RequestHandler', 'Session', 'Facebook.Connect' => array('model' => 'User') );//, //'DebugKit.Toolbar');

Inspect Element の下の Resources をチェックすると、PHPSESSID と CakeCookie[autoLogin] の 2 つが表示されます。PHPSESSID - タイプはセッションで、expires - 空白です。CakeCookie タイプは Cookie で、1 か月後に有効期限が切れます。

ネイティブ PHP のように「見える」ので、session_start() 関数をチェックしようと考えたところ、見つかりました! これは Facebook コンポーネントでしたが、無効にすると PHPSESSID が来なくなりましたが、ブラウザの終了時に Cookie が削除されました。

ご意見をお聞かせください。

前もって感謝します。

4

1 に答える 1

2

FacebookプラグインファイルでFacebook.phpファイルを開きます。

4行目または5行目の__constructの下で、session_start();という行をコメントアウトします。

理想的には、CakePHPはすべてのプラグインをロードし、PHPSESSIDが設定されるようにします。これをコメントアウトすれば、Facebookでさえ効果的に機能します。

また、tmpフォルダーの下に「sessions」というフォルダーを作成し、chmod -R 0777 sessions /とマークして、アプリケーションを更新してください。

于 2012-09-11T07:05:04.987 に答える