下記の記事を参考にログインを実装したのですが、ログアウト処理でなぜかできず、そのまま再度ログインできてしまいます。
参考:https://qiita.com/sofpyon/items/982fe3a9ccebd8702867
$_SESSION、$__REQUESTなどそれっぽい値は0で、唯一残っている$_COOKIE
の値を削除しようとしてもできません。
【login.php】 <?php session_start(); require_once 'common.php'; require_once 'twitteroauth/autoload.php'; use Abraham\TwitterOAuth\TwitterOAuth; //TwitterOAuth をインスタンス化 $connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET); //コールバックURLをここでセット $request_token = $connection->oauth('oauth/request_token', array('oauth_callback' => OAUTH_CALLBACK)); //callback.phpで使うのでセッションに入れる $_SESSION['oauth_token'] = $request_token['oauth_token']; $_SESSION['oauth_token_secret'] = $request_token['oauth_token_secret']; //Twitter.com 上の認証画面のURLを取得( この行についてはコメント欄も参照 ) $url = $connection->url('oauth/authenticate', array('oauth_token' => $request_token['oauth_token'])); //Twitter.com の認証画面へリダイレクト header( 'location: '. $url );
【callback.php】 <?php session_start(); require_once 'common.php'; require_once 'twitteroauth/autoload.php'; use Abraham\TwitterOAuth\TwitterOAuth; //login.phpでセットしたセッション $request_token = []; // [] は array() の短縮記法。詳しくは以下の「追々記」参照 $request_token['oauth_token'] = $_SESSION['oauth_token']; $request_token['oauth_token_secret'] = $_SESSION['oauth_token_secret']; //Twitterから返されたOAuthトークンと、あらかじめlogin.phpで入れておいたセッション上のものと一致するかをチェック if (isset($_REQUEST['oauth_token']) && $request_token['oauth_token'] !== $_REQUEST['oauth_token']) { die( 'Error!' ); } //OAuth トークンも用いて TwitterOAuth をインスタンス化 $connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $request_token['oauth_token'], $request_token['oauth_token_secret']); //アプリでは、access_token(配列になっています)をうまく使って、Twitter上のアカウントを操作していきます $_SESSION['access_token'] = $connection->oauth("oauth/access_token", array("oauth_verifier" => $_REQUEST['oauth_verifier'])); /* ちなみに、この変数の中に、OAuthトークンとトークンシークレットが配列となって入っています。 */ //セッションIDをリジェネレート session_regenerate_id(); //マイページへリダイレクト header( 'location: /mypage.php' );
【logout.php】 <?php // ログアウトページ // セッション開始 session_start(); ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>ログアウトページ</title> </head> <? // セッション残っていたら削除開始 if (isset($_SESSION["oauth_token"]) || isset($_SESSION["oauth_token_secret"]) || isset($_SESSION['oauth_verifier'])) { // セッション変数を全て削除 $_SESSION = array(); $_REQUEST = array(); // セッションの登録データを削除 session_destroy(); // クッキーの値を格納 //$value = $_COOKIE['xxxxx']; setcookie('xxxxx', '', time() - 1800); //setcookie('hoge', $value, time() - 1800); var_dump($_COOKIE); echo 'ログアウト処理完了'; }else { header('Location: login.php'); } //var_dump($_SESSION); //var_dump($_REQUEST); //var_dump($_COOKIE); ?> <a href="login.php">ログインページへ戻る</a> <p> <p> <body> </body> </html>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/05/02 11:49
2018/05/03 02:37
退会済みユーザー
2018/05/03 04:29