2017-07-07 3 views
1

私は、特定の情報をログに記録せずに認証できるように、特定の情報をクッキーに保存する "Remember me"オプションを選択するオプションがありますPHP - クッキーは削除されていますが、次のページに再生成されます

ただし、ログアウトしたい場合、これらのCookieは削除されているようですが、何らかの理由で次のページに送信されたときに再作成されたようです。

以下は、ログアウトスクリプトの例です。この正確なコードが呼び出される前に、ユーザーはログアウトファイルに含まれる別のファイルを介して認証され、ユーザーが記憶したいと指定した場合にはCookieが設定されます。

// -- FROM THE AUTH FILE -- // 

setcookie("username", "bob240", time() + (86400 * 30), "/", ".domain.com"); 
setcookie("password", "password123", time() + (86400 * 30), "/", ".domain.com"); 

// -- END FROM THE AUTH FILE -- // 

// Clear cookies by setting them to a past date. 
setcookie("username", "", time() - (86400 * 30), "/", ".domain.com"); 
setcookie("password", "", time() - (86400 * 30), "/", ".domain.com"); 

// Check if the session was destroyed. 
if(session_destroy()) { 

    // Redirect the user. 
    header('Location: /next/page/'); die("Redirecting..."); 

} 

これは、同じクッキーが同じページに二回設定されていることを意味します。ただし、これらのクッキーは、リストされている順番で設定されているため、競合があってはなりません。

しかし、この理論をテストするために、ブラウザからのヘッダー要求と応答を追跡しました。ユーザーがログアウトしたときにユーザーが認証され削除されたときにCookieが設定されていました。

さらに確認するには、ログアウトページとユーザーがリダイレクトされたページに$ _SESSIONと$ _COOKIEを複数回表示しました。 $ _COOKIEが空だったので、クッキーが削除されているのがわかりました。しかし、$ _SESSIONには依然としてユーザーを認証するのに必要な情報が含まれていました。このため、セッションで何となく問題が発生していると思いました。しかし、私は「Remember me」オプションからクッキーを設定せずにログアウトをテストしたところ、この考えを捨てました。

また、サブドメインからログアウトページにアクセスしたときに、subdomain.domain.com - > www.domain.com/log-out-page/にアクセスすると、クッキーが設定されていても正常にログアウトします。

また、ログアウトページを複数回訪れた後も、正常にログアウトすることができます。

他の2つのサイトで同じコード(AFAIK)を使用していますが、どちらも同じWebサーバー上にあり、すべて正常に動作しています。私は他の2つのサイトからのファイルを使用しようとしましたが、問題は依然として続きます。これらのサイトはすべてCloudFlareを使用し、同じ設定が設定されています。

これは非常に曖昧な問題ですので、自分のサイトのデモアカウントを使用してログインし、自分で何かをテストすることができます。 https://theartex.net/system/login/、働いている サイト:https://mathhulk.me/system/login/

アカウント: - デモ、 パスワード - デモ

+0

私は3つのブラウザで自分のサイトをテストしました。 ChromeとEdgeの両方でこの問題が発生しているようですが、iPadのSafariから正常にログアウトできます。 – mathhulk

+0

もう少しテストをしました。他のユーザーに自分のPCのデモアカウントからログインするように頼んだところ、彼は同じ問題を抱えていました。しかし、私はこれを私の他のラップトップからもテストしたところ、正常にログアウトすることができました。これは変わった奇妙な問題のようです。 – mathhulk

答えて

2

のアラートを取得する/cloud/api/の定数のping ユーザ名を動作していない

サイトユーザーは/system/logoutと同時にCookieを設定します。 /cloud/apiが2つのクッキーを設定しないようにしておくと、すべてが再び機能するはずです。

+0

いつも@ AL_1を助けてくれる人。 – mathhulk

関連する問題