2011-12-06 5 views
3

다른 도메인에 example.com & example.net이라는 두 개의 웹 사이트가 있다고 가정 해 보겠습니다. 두 사이트의 사용자 데이터는 동일하므로 동일한 사용자 ID와 비밀번호로 두 사이트에 모두 로그인 할 수 있습니다.동시에 두 웹 사이트에서 로그 아웃하는 방법 - PHP 세션 처리

사용자가 example.com의 로그 아웃 버튼을 클릭하면 example.net에서도 로그 아웃해야합니다. 두 사이트 모두 열려 있고 동일한 브라우저 (다른 탭에 있음)에 로그인되어 있습니다.

사용자가 example.com에서 로그 아웃 할 때 example.net의 세션 쿠키를 파괴 할 수 있습니까?

+1

두 사이트의 사용자 데이터가 같다고하면 두 사이트 모두 데이터베이스를 공유하므로 데이터베이스에 플래그를 넣을 수 있습니까? – phpmeh

+0

안녕하세요, phpmeh, 좋은 제안입니다. 그러나이 두 응용 프로그램은 동일한 데이터베이스를 공유하지 않습니다. 또한 우리는 데이터베이스 또는 두 번째 사이트의 코드베이스에 대한 액세스 권한이 없습니다. 다른 방법이 있습니까? 고맙습니다. –

+0

동시에 두 웹 사이트에서 세션을 만드는 방법은 무엇입니까? API를 통해? – phpmeh

답변

-1

데이터를 데이터베이스에 저장하는 세션 처리를 사용해 보겠습니다. 당신은 아약스 요청 시간마다 수정 양을 가질 수있는 사이트 모두에서
확인할 abc.com과 xyz.com

+0

어떤 데이터베이스입니까? 그는 2가 다르다고 말합니다. 이 세션 처리는 어떻게 작동합니까? 설명 할 수 있니? 이 대답을 확장 해 주시겠습니까? –

+0

세션 처리만을위한 데이터베이스를 설정하고 PHP 기본 세션 핸들러를 변경하여이 데이터베이스를 사용할 수 있습니다. 두 도메인 모두에서이 작업을 수행하는 경우, 개인 정보를 저장하는 것이 가능해야합니다.이 개인 정보는 1 세션 (ID) 만 사용하거나 로그 아웃 할 때 적어도 한 번에 두 사람을 죽이기 위해 사용됩니다. – djot

0

당신은 사이트 모두에 공통 중간 사이트 또는 사용자 세션을 추적하는 웹 서비스를, 즉이 필요합니다 사용자 세션의 유효성을 확인하는 중개 서비스 한 사이트에서 사용자가 로그 아웃하면 세션이 파괴됩니다. 그래서 다른 사이트에서 Ajax 요청을 확인하면 닫힌 세션을 얻을 것이므로 코드를 작성하여 쿠키를 삭제하거나 원하는 작업을 수행하십시오.

2

두 사이트가 중간에 로그인 정보를 공유하지 않으므로 둘 다 독립적 인 세션 데이터를 유지하므로 다른 웹 사이트의 세션 데이터를 수정할 수 없습니다.

해결 방법은 세션 데이터를 파괴하기 위해 다른 웹 사이트와 통신하는 API를 작성하는 것입니다.

예 : 1은

탭 : ". 예 닷컴"를 개설하고 "앨리스"

탭로 로그인이는 ". 예 "을 개설하고 로그인 "alice"로

--- 이제 "상호 로그 아웃"을하려면 다음을 수행하십시오. ---

을 클릭 할 탭 1 (.COM 도메인)의 "로그 아웃"은 가야한다 :

마찬가지로, 탭 2에서 "로그 아웃"을 클릭하면 (.net) 나는 그런 당신을 위해 분명하다 생각

:에) 도메인, 그것은 가야한다.

+1

페이스 북 계정을 사용하여 사이트에 로그인 한 페이스 북에서 사용자를 로깅 할 때도 똑같이해야했습니다. –

0

다음은 Drupal에서의 작업 방법입니다. 어떤 CMS를 사용하는 경우 특정 방법이 있지만 핵심 구조는 PHP 환경에서 지원하는 것과 동일합니다. 한 사이트에서 로그인 요청을 받으면 주어진 사용자 이름과 암호로 다른 사이트에 내부적으로 로그인하십시오.

  • 먼저 사이트에 로그인하여 쿠키 토큰 등을 가져 와서 사용자 요구 사항과 관련된 다른 작업을 진행하십시오.

샘플 코드는 여기 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을 호출 할 수 있습니다. 로그인 호출에서 반환 된 쿠키 값을 사용해야하지만 로그 아웃 페이지에서 다른 사이트로 ajax 호출을하면 작업이 없습니다.

drupal_http_request 메서드에 대한 자세한 내용은 Drupal 사이트 API를 참조하십시오.

희망이 있으시면 PHP로 숙련도를 프로그래밍하여 환경에서 도움이 될 것입니다.

관련 문제