2011-12-06 20 views
3

example.com & example.netという2つのWebサイトがあるとします。これらのサイトの両方のユーザーデータは同じですので、同じユーザーIDとパスワードで両方のサイトにログインできます。同時に2つのウェブサイトからログアウトする方法 - PHPセッション処理

ユーザーがexample.comのログアウトボタンをクリックすると、example.netからもログアウトする必要があります。両方のサイトは開いていて、同じブラウザ(別のタブにある)にログインしています。

ユーザーがexample.comからログアウトしたときにexample.netのセッションCookieを破棄することはできますか?

+1

両方のサイトのユーザーデータが同じだとすると、両方のサイトがデータベースを共有しているため、データベースにフラグを設定できますか? – phpmeh

+0

ちょっとphpmeh、良い提案です。しかし、これらのアプリケーションは両方とも同じデータベースを共有しません。また、データベースや第2サイトのコードベースにアクセスすることはできません。他に何かありますか? 〜 –

+0

どのようにして、同時に両方のWebサイトでセッションを作成していますか? APIを介して? – phpmeh

答えて

-1

データベースにデータを格納するセッション処理を使用しようとします。

+0

どのデータベースですか?彼は2が異なっていると言います。このようなセッション処理はどのように機能しますか?あなたは説明できますか?あなたはこの答えを拡大できますか? –

+0

このデータベースを使用するには、セッション処理用にデータベースを設定し、PHPのデフォルトセッションハンドラを変更することができます。両方のドメインでこれを行う場合は、個人情報を保存する必要があります。個人情報は、セッション(ID)が1つしかなく、少なくとも同時にログアウトするときに使用されます。 – djot

0

ユーザーセッションを追跡する仲介サイトまたはWebサービスが必要です(abc.comとxyz.comの両方のサイトに共通)
両方のサイトから、確認するたびにajaxリクエストを送信できますユーザセッションの妥当性のための仲介サービス。ユーザーが1つのサイトのいずれかでログアウトした場合、セッションは破棄されます。だから、他のサイトのチェックからのajaxリクエストでは、クローズドセッションを取得するので、コードでクッキーを破棄したり、何をしたいのかを書き込んだりします。

2

2つのサイトはログイン情報を共有していないため、両方とも独立したセッションデータを保持しており、他の一部のWebサイトのセッションデータを変更することはできません。

解決策は、セッションデータを破棄するために、他のWebサイトと通信するAPIを作成することです。

例:

タブ1: "例COM" 開と "アリス"

タブ2としてログイン: "ネット例" 開設とログイン"alice"として

--- ここで、「相互ログアウト」を行うには、次の操作を行います。 ---

あなたはタブ1(.COMドメイン)で "ログアウト" をクリックすると、それに行く必要があります。

同様に、タブ2で「ログアウト」をクリックすると(.net)ドメイン)、それがに行く必要があります。私はそれがあなたのために明らかだと思う

にリダイレクトします。

+1

Facebookのアカウントを使用して私たちのサイトにログインすることを選んだfacebookからユーザーをログアウトさせるために同じことをしなければなりませんでした。 –

0

以下は、私がDrupalでやっていることです。任意のCMSを使用する場合、それを行う特定の方法がありますが、コア構造はPHP環境でサポートするのと同じです。あるサイトがログイン要求を受け取ると、指定されたユーザー名とパスワードで内部的に他のサイトにログインします。

  • 最初にサイトにログインし、Cookie Tokesなどを取得して、ユーザーの要件に関連するその他の項目を進めます。

サンプルコードは、Drupal CMS用です。それがどのように機能するのか、その機能を理解してから、関連する部品をコピーして自分の環境で動作させることができます。

// Build request data 
$user_login_method = 'POST'; 
$user_login_retry = 0; 
$post_data = array('username' => trim($username), 'password' => trim($password)); 
$user_login_data = http_build_query($post_data, null, '&'); 

// Send a request with the data to other site 
$login_request = drupal_http_request($other_site_login_url, $user_login_headers, $user_login_method, $user_login_data, $user_login_retry); 

// Look for set cookie header value in the response 
if(isset($login_request->headers['Set-Cookie'])) { 
// Set the cookie name and do the rest based on values 
} 
  • 第二には、ユーザーをログアウトするために、他のサイトのログアウトURLを呼び出すんです。ログイン呼び出しで返されたCookie値を使用する必要があることに注意してください。ただし、ログアウトページから別のサイトへのajax呼び出しを行った場合、回避策はありません。

drupal_http_requestメソッドの詳細については、DrupalサイトAPIを参照してください。

これは、PHPでスキルを習得している環境でこれを行うのに役立ちます。

関連する問題