PHP(CakePHP3)でログイン機能を作っています。
自動ログインにチェックを入れるとcookieに登録して、cookieのキーをdbに登録しています。
自動ログインにチェックなしの場合はsessionにユーザーid値を入れています。
ログアウト時はログアウトページで処理をし、別ページに飛ばしてから、戻るボタンを無効にしたいと思っています。
今回ご教示いただきたいのは、
①ログアウトボタンをクリックした後、history.forward();が効かず、キャッシュが残った前のページに戻れてしまう
②ログアウトボタンをクリックした後、ログアウトされ、今度は別アカウントでログインし直した場合、ログアウト前のキャッシュが行ったことのある全ページに残ってしまっていて、そのページは前のアカウント情報が表示されてしまう。
やりたいことは、ログアウト後にトップページに飛ばし、ログアウト前のページに戻れなくしたいということと、
ログアウトしたら、すべてのページのキャッシュが切れるようにしたいです。
###該当のソースコード
php
1function logout(){ 2 3 $log_out=$this->request->data["logout"]; 4 5 6 if($log_out=="on"){ 7 $this->Session->delete(); 8 9 $logintoken=$_COOKIE["logintoken"]; 10 $cookie_dom=$_SERVER["SERVER_NAME"]; 11 12 setcookie('logintoken','', time()-1800,'/',$cookie_dom);//cookieをsetした時と同じ形にする 13 14 $this->Session->destroy(); 15 16 $this->redirect("/logins/logout_while");//一ページ挟んでホームに飛ばす 17 }//if($log_out=="on") 18 19 20 21 }//function logout()
logout_while.ctpでの処理
php
1 <script> 2 history.forward(); 3 location.reload(false); 4 window.location.href="/"; 5 </script>
logoutの処理で、$_COOKIEなどを使用しているのが原因でしょうか?
下記で記述した時にうまくいかず、上記のように記述しています。
//cookieの設定 $this->Cookie->config('path', '/'); $auto_login_key=sha1( uniqid() . mt_rand( 1,999999999 )); $this->Cookie->write('token', $auto_login_key); //$this->Cookie->read('token'));
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/05/29 03:00
2017/05/29 04:54
2017/05/29 07:03
2017/05/29 07:10
2017/05/29 07:18
2017/05/29 07:20
2017/05/29 07:29
2017/05/29 07:30