모든 사용자 데이터에 대해 php 세션 (쿠키가 아니라 세션 아이디 쿠키 제외)을 사용하고 사용자가 자신의 프로필 user.mydomain.com으로 이동하면 즉시 "로그 아웃"됩니다. 하위 도메인을 제거 할 때까지php 세션이 하위 도메인으로 이월되도록 허용
한 그 * .mydomain.com을
모든 사용자 데이터에 대해 php 세션 (쿠키가 아니라 세션 아이디 쿠키 제외)을 사용하고 사용자가 자신의 프로필 user.mydomain.com으로 이동하면 즉시 "로그 아웃"됩니다. 하위 도메인을 제거 할 때까지php 세션이 하위 도메인으로 이월되도록 허용
한 그 * .mydomain.com을
있는 4 옵션으로 모든 도메인에서 세션을 받아 들일 수있는 방법이 있나요.
장소이 php.ini 파일에서 :
session.cookie_domain = ".example.com"
또는 당신의 .htaccess에서 :
php_value session.cookie_domain .example.com
또는
스크립트의 첫 번째 일이 같은 :ini_set('session.cookie_domain', '.example.com');
또는 귀하의 사이트에 대한 귀하의 PHP-Fpm 풀 구성 :
php_value[session.cookie_domain] = .example.com
if(isset($_COOKIE['session_id']))
session_id($_COOKIE['session_id']);
Zend_Session::start(); //or session_start();
if(!isset($_COOKIE['session_id']))
setcookie('session_id', session_id(), 0, '/', '.yourdomain.com');
보안이 저조 될 수 있습니다. 내가 불완전하거나 불량한 답변으로 좌절하는 경우, 이것이 귀하의 구세주입니다. 그냥 작동합니다.
이것은 나를 위해 일했지만 보안 문제를 이해하지 못합니다. 어떤 보안 문제가 있을지 설명해 주시겠습니까? – Neo
if(isset($_COOKIE['session_id']))
session_id($_COOKIE['session_id']);
Zend_Session::start(); //or session_start();
if(!isset($_COOKIE['session_id']))
setcookie('session_id', session_id(), 0, '/', '.yourdomain.com');
이것은 좋은 해결책이지만 모든 상황에서 사용할 수는 없습니다. 예를 들어 비 세션 쿠키에 의존 할 수 없을 때 작동하지 않습니다.
올바르게 사용하면 실제로 작동해야합니다. 하지만 더 CTT의 제안 @에 확대 - - 예를 들어
ini_set('session.cookie_domain', '.example.com');
당신은 내가 알고있는이 꽤 오래
session_start()
를 호출하는 모든 파일도 session_start()
전에 넣어 필요가 내가 PHP를 추가하는 데 필요한 각 하위 디렉토리에있는 .ini 파일 (즉 PHP 코드를 실행하고 세션이 필요합니다) 다음 텍스트로 내 하위 도메인을 :
suhosin.session.cryptdocroot=Off
suhosin.cookie.cryptdocroot=Off
나는이 (가 이것을 알아 내기 위해 나에게 나이를했다) 도움이되기를 바랍니다.
로컬 환경에서 세션 공유가 제대로 작동하므로이 코드는 현재 2 시간 동안 디버깅되었습니다. 는 suhosin 설정을 이전에 확인 했어야합니다 – weyandch
나를 위해 일한 또 다른 옵션은 : 세션의 이름을 강제하는 것입니다 : 난 그냥이 문제를 가지고
session_name("myWebsite");
session_start();
을 그리고 내가 두 개의 서로 다른 하위 도메인에 대해 서로 다른의 php.ini 파일을 사용하고 있었다 밝혀 . 이 ini 파일은 다른 session.save_path 변수를 지정했습니다. 세션을 공유해야하는 모든 하위 도메인에서 동일한 이유가 필요합니다.
변화
session_name('mysession');
다음 마지막으로 하위 도메인의 기본 세션 이름을 변경 PHP 페이지
session_set_cookie_params(0,"/",".example.com",FALSE,FALSE);
setcookie(session_name(), session_id(),0,"/","example.com");
session_start();
에 다음 코드를 사용
같은 파일 핵심 기능의 상단에있는 세션 이름 하위 도메인의 핵심 기능 파일 에있는 기본 쿠키를 제거하십시오 :/*default session name*/
session_name("mysession");
/*remove the PHPSESSID and default session name from subdomain's cookie*/
setcookie("mysession", "",1,"/");
setcookie("PHPSESSID", "",1,"/");
당신이 PHPSESSID 같은 쿠키 이름을 사용하여 계속하면, 그냥, 다음 브라우저의 기존 쿠키를 확인
"mysession" string like session_name('mysession'), setcookie("mysession", "",1,"/");
모든 기능을 제거 단지 도메인 및 하위 도메인의 모든 쿠키를 제거하고 프로세스를 반복합니다.
이것은 저에게 도움이되었습니다. 이 질문에 대한 다른 답변은 없습니다. –
예. ini_set
이 작동 중입니다. 브라우저의 모든 캐시와 쿠키를 파괴하여 제대로 작동하는지 확인하십시오.
xxx.example.com
및 yyy.example.com
귀하의 브라우저의 모든 캐시와 쿠키를 파괴한다.
ini_set('session.cookie_domain', '.example.com'); session_start();
첫째,'위해서는 ini_set은 ('session.cookie_domain', '.example.com을')', * 다음 *'으로 session_start()'또는'세션 (시작 ::)'에서 HTTPS ://github.com/delight-im/PHP-Cookie – caw