>  기사  >  백엔드 개발  >  여러 도메인 이름으로 SESSION 공유 달성

여러 도메인 이름으로 SESSION 공유 달성

巴扎黑
巴扎黑원래의
2016-11-24 09:13:161740검색

다중 도메인 이름 공유 세션을 구현하려면 먼저 SESSION의 작동 메커니즘을 이해해야 합니다. 기본적인 개념은 다루지 않겠습니다.
세션은 다음과 같이 실행됩니다.
사용자 A가 사이트 Y를 방문합니다. 사이트 Y가 session_start()를 실행하면(다음은 session_start()가 항상 존재한다고 가정함) 일반적으로 이 세션 ID가 생성됩니다. with COOKIE 사용자 A에게 양식으로 저장합니다. (php.ini에서 session.use_only_cookies를 1로 설정하여 COOKIE에 세션 ID를 강제로 전달할 수 있습니다.) 이때 SESSION ID는 $_COOKIE['PHPSESSID']로 나타납니다. (PHPSESSID는 session_name() 함수로 수정 ​​가능)
이후 A라는 사용자가 접속하면 이 세션 ID($_COOKIE['PHPSESSID'])가 나옵니다. A가 Y에 접속할 때 사이트 Y로 전송될 때마다 표시됩니다.
Y 사이트에는 SESSION의 실제 데이터를 저장하는 데 사용되는 디렉터리가 있습니다. 사이트 Y는 세션 ID를 받은 후 세션 ID를 통해 SESSION 데이터와의 연결을 얻은 후 SESSION 데이터를 반환합니다.

서버와 클라이언트 사이의 SESSION은 SESSION ID로 연결되고, SESSION 데이터는 특정 폴더에 일반 파일 형태로 저장되기 때문에 똑똑하신 분들도 이미 생각하셨을 겁니다. .
그러면 서로 다른 도메인 이름을 구현하려면 다음 두 가지 조건만 충족하면 됩니다.

1) 서로 다른 도메인 이름의 SESSION 데이터 디렉터리가 함께 통합되거나 동기적으로 업데이트됩니다.

2) 동일한 고객의 경우 통일된 SESSION ID

를 사용하여 첫 번째 조건을 구현합니다.
동일 서버라면 별도의 설정은 필요하지 않습니다.
클러스터/분산이라면 더 이상 말이 필요 없을 것 같아요. . 분산 응용 프로그램을 할 수 있는 사람들은 나보다 디렉토리 공유에 대한 경험이 더 많을 것입니다. 서버 테스트를 너무 많이 진행하지 않았는데 주관적 조건과 객관적 조건 모두 이유가 있습니다.

여기서 주로 두 번째 조건에 대해 이야기하고 싶습니다. 서로 다른 도메인 이름이 통일된 SESSION ID를 갖도록 하는 것입니다.
그럼 어떻게 통일해야 할까요?
먼저 이 SESSION ID는 서로 다른 도메인 이름 간에 전달되어야 하며 쿠키는 도메인 이름에 특정해야 하므로 클라이언트가 이전 작업을 완료합니다. 클라이언트가 배달 프로세스를 완료하지 않으면 배달되는 도메인 이름은 그것이 어떤 클라이언트에 대한 것인지 알 수 없습니다.

두 번째 단계는 전송이 허용되는 도메인 이름 아래의 SESSION ID를 수정하는 것입니다.

전달 방법:
HTML에서는 다양한 방법을 사용할 수 있습니다. 예를 들어
iframe

또는 .js