2010-07-22 4 views
1

저는 PHP와 세션에 익숙하지 않습니다. 저는 이전에 그들과 함께 일해 본 적이 없으며, 하위 도메인에서 AJAX로 작업하는 데 몇 가지 문제가 있습니다.PHP : session_cookie over subdomains?

나는 http://www.example.com/whatever에 그리고 난과 함께 쿠키를 설정하고있어 : 다음 페이지의 특정 부분을 다시로드 jQuery를 (load())를 사용하고

session_set_cookie_params(0, '/', '.example.com'); 
session_start(); 
if(!isset($_SESSION['password'])) { 
    $_SESSION['password'] = $_POST['password']; 
} 
var_dump(ini_get_all('session')); //seems like it doesn't save the cookie??? 

. 로딩 중입니다. somefile.phphttp://subdomain.example.com/subdomain/somefile.phpsomefile.php 안에 세션 정보를 가져오고 싶습니다. 나는 사용하고있다

var_dump(ini_get_all('session')); //can't find the cookie!?? 

if(isset($_SESSION['password'])) { 
    $user_pass = $_SESSION['password']; 
    echo "Password: " . $user_pass . "<br>"; 
} else { 
    print "can't find cookie!"; 
} 

그러나 나는 정보를 얻을 수 없다! 내가 뭘 잘못했는지 알기나 해? 내가 놓친 게 있니?

+0

세션 쿠키가 제대로 설정하고 이후의 요청에 반환되는 경우 확인 했습니까? – Gumbo

답변

2

하위 도메인이 다른 서버에서 실행되는 경우 ... 세션이 단순히 존재하지 않습니다! 세션 데이터는 기본적으로/tmp의 어딘가에 저장되기 때문입니다.

여러 서버에서 세션 데이터를 공유하려면 고유 한 세션 처리기를 작성하여 데이터베이스에 저장해야합니다. Session_set_save_handler()

+0

아니요 동일한 서버에 있습니다. 이상한 것은 WORDPRESS가 놈이라고 생각합니다. 왜냐하면 만약 내가 var_dump 위의 첫 번째 예제 (어디에 내가 쿠키를 설정)에 거기에 없어 !!! ??? 어떤 아이디어? 어쩌면 wordpress에서 쿠키를 설정할 수 없습니다. 나는 그것을 얻지 않는다! 나는 위에서 편집했다. – matt

+0

까지 나는 wordpress가 custom session handler를 사용한다고 말할 수있다. 다른 스크립트에서도이 스크립트를 사용해야합니다. – Robus

+0

은 SUBDOMAINS보다 set_cookie()를 사용하는 유일한 방법입니다. 그뿐 아니라 session_set_cookie_params()도 작동합니까? – matt

0

관련 RFC의 구조 내에서 쿠키를 가져 와서 하위 도미노에서 작동하는 것은 쉽지 않습니다. 그것에 다른 브라우저 공급자에 의해 다른 구현의 변형의 합병증을 추가하십시오 - 그것은 단지 번거 로움의 가치가 없어.

대신 SSO를 사용하십시오. 이 스택 오버플로에 many times을 논의하고있다

C.