찾다
백엔드 개발PHP 튜토리얼여러 도메인 이름으로 SESSION 공유 달성

다중 도메인 이름 공유 세션을 구현하려면 먼저 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

wml에서는 wml 스크립트의 특성상 스크립트 형태로 호출할 수 없고, wml에는 iframe도 없습니다.. 하지만 img를 통해서는 전송할 수 있습니다.

수정 방법:
SESSION ID는 일반적으로 COOKIE를 통해 전달되므로 $_COOKIE['PHPSESSID'];만 전달하면 됩니다. 하지만 session_name에 의해 PHPSESSID가 변경되면 setcookie에서 PHPSESSID를 수정해야 합니다. 이는 매우 번거로운 작업이 됩니다. . 따라서 세션별 함수 session_id를 선택하여 $_COOKIE['PHPSESSID'];

몇 가지 참고 사항:

session.use_only_cookies가 0(PHP 기본값)인 경우 세션 ID는 URL이나 다른 형식으로 전달될 수 있습니다

session_id() 및 session_name은 session_start() 전에 사용해야 합니다

다음은 여러 도메인 이름을 구현하기 위해 작성한 간단한 클래스입니다. 위의 내용이 이해되지 않으면 내 다중 도메인 이름 수업을 살펴보세요. 이 클래스는 HTML의 iframe 형식으로 구현됩니다.

/*

사용:
서버 A, 서버 B, A의 index.php에 로그인하고 B에 SESSION을 수신하는 파일을 생성합니다. ses_get.php
A의 index.php를 다음과 같이 수정합니다
session_start();

를 추가하고 다음과 같이 작성합니다: mdSession::_set( 'B/ses_get.php ')
그리고 ses_get.php는 처음에 mdSession::_get();
을 작성합니다. @Author: Surfchen@gmail.com http://www.surfchen.org/ */
function mdSession()
{

} function set($urls)
{ if (!is_array($urls))
{ $urls=array($urls ); } foreach ($urls를 $value로)
{ echo ''; } return true; } function get()
{ session_id($_SERVER['QUERY_STRING']); session_start (); return true; } function _set($urls)
{ $obj=new mdSession(); return $obj->set($urls) } function _get()
{ $obj=new mdSession(); ->get(); }
}?>

index.php :

include "mdSession.php";

session_start();

$_SESSION['php']="yogurt8";

mdSession:: _set('http://www.b.com/ses_get.php');

var_dump($_SESSION);

?>

ses_get.php

include "mdSession.php";

mdSession::_get();

?>

b.php:

session_start();

var_dump($_SESSION);

먼저 방문하세요 http://www.a.com/a.php 그런 다음 http://www.b.com/b.php로 이동하여 효과를 확인하세요.

그렇지 않습니다. Firefox 및 Google Chrome에서는 작동하지만 Ie에서는 여전히 작동하지 않습니다


성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
PHP 세션에 저장된 데이터를 어떻게 수정합니까?PHP 세션에 저장된 데이터를 어떻게 수정합니까?Apr 27, 2025 am 12:23 AM

tomodifyDatainAphPessess, startSessionstession_start (), 그런 다음 $ _sessionToset, modify, orremovevariables.

PHP 세션에 배열을 저장하는 예를 제시하십시오.PHP 세션에 배열을 저장하는 예를 제시하십시오.Apr 27, 2025 am 12:20 AM

배열은 PHP 세션에 저장할 수 있습니다. 1. 세션을 시작하고 session_start ()를 사용하십시오. 2. 배열을 만들고 $ _session에 저장하십시오. 3. $ _session을 통해 배열을 검색하십시오. 4. 세션 데이터를 최적화하여 성능을 향상시킵니다.

Garbage Collection은 PHP 세션에 어떻게 효과가 있습니까?Garbage Collection은 PHP 세션에 어떻게 효과가 있습니까?Apr 27, 2025 am 12:19 AM

PHP 세션 쓰레기 수집은 만료 된 세션 데이터를 정리하기위한 확률 메커니즘을 통해 트리거됩니다. 1) 구성 파일에서 트리거 확률 및 세션 수명주기를 설정합니다. 2) CRON 작업을 사용하여 고재 응용 프로그램을 최적화 할 수 있습니다. 3) 데이터 손실을 피하기 위해 쓰레기 수집 빈도 및 성능의 균형을 맞춰야합니다.

PHP에서 세션 활동을 어떻게 추적 할 수 있습니까?PHP에서 세션 활동을 어떻게 추적 할 수 있습니까?Apr 27, 2025 am 12:10 AM

PHP의 사용자 세션 활동 추적은 세션 관리를 통해 구현됩니다. 1) Session_start ()를 사용하여 세션을 시작하십시오. 2) $ _session 배열을 통해 데이터를 저장하고 액세스하십시오. 3) 세션 _destroy ()를 호출하여 세션을 종료합니다. 세션 추적은 사용자 행동 분석, 보안 모니터링 및 성능 최적화에 사용됩니다.

데이터베이스를 사용하여 PHP 세션 데이터를 저장할 수있는 방법은 무엇입니까?데이터베이스를 사용하여 PHP 세션 데이터를 저장할 수있는 방법은 무엇입니까?Apr 27, 2025 am 12:02 AM

데이터베이스를 사용하여 PHP 세션 데이터를 저장하면 성능 및 확장 성을 향상시킬 수 있습니다. 1) 세션 데이터를 저장하기 위해 MySQL 구성 : php.ini 또는 php 코드에서 세션 프로세서를 설정하십시오. 2) 사용자 정의 세션 프로세서 구현 : 데이터베이스와 상호 작용하기 위해 열린, 닫기, 읽기, 쓰기 및 기타 기능을 정의합니다. 3) 최적화 및 모범 사례 : 인덱싱, 캐싱, 데이터 압축 및 분산 스토리지를 사용하여 성능을 향상시킵니다.

PHP 세션의 개념을 간단한 용어로 설명하십시오.PHP 세션의 개념을 간단한 용어로 설명하십시오.Apr 26, 2025 am 12:09 AM

phpsessionstrackuserdataacrossmultiplepagerequestsususingauniqueIdStoredInAcookie.here'showtomanagetheMeftically : 1) STARTASESSIONSTART_START () andSTAREDATAIN $ _SESSION.2) RegenerATERATESSESSIDIDAFTERLOGINWITHSESSION_RATERATERATES (True) TopreventSES

PHP 세션에 저장된 모든 값을 어떻게 반복합니까?PHP 세션에 저장된 모든 값을 어떻게 반복합니까?Apr 26, 2025 am 12:06 AM

PHP에서 세션 데이터를 통한 반복은 다음 단계를 통해 달성 할 수 있습니다. 1. Session_start ()를 사용하여 세션을 시작하십시오. 2. $ _session 배열의 모든 키 값 쌍을 통해 Foreach 루프를 통과합니다. 3. 복잡한 데이터 구조를 처리 할 때 is_array () 또는 is_object () 함수를 사용하고 print_r ()를 사용하여 자세한 정보를 출력하십시오. 4. Traversal을 최적화 할 때 페이징을 사용하여 한 번에 많은 양의 데이터를 처리하지 않도록 할 수 있습니다. 이를 통해 실제 프로젝트에서 PHP 세션 데이터를보다 효율적으로 관리하고 사용하는 데 도움이됩니다.

사용자 인증에 세션을 사용하는 방법을 설명하십시오.사용자 인증에 세션을 사용하는 방법을 설명하십시오.Apr 26, 2025 am 12:04 AM

이 세션은 서버 측 상태 관리 메커니즘을 통해 사용자 인증을 인식합니다. 1) 세션 생성 및 고유 ID의 세션 생성, 2) ID는 쿠키를 통해 전달됩니다. 3) ID를 통해 서버 저장 및 세션 데이터에 액세스합니다. 4) 사용자 인증 및 상태 관리가 실현되어 응용 프로그램 보안 및 사용자 경험이 향상됩니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

SublimeText3 Linux 새 버전

SublimeText3 Linux 새 버전

SublimeText3 Linux 최신 버전

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.