2011-02-09 3 views
1

내 웹 사이트에서 여러 하위 도메인을 갖고 싶습니다. 지정된 하위 도메인의 컨텍스트를 만드는 파일은 해당 하위 디렉토리에 저장됩니다.SESSION 변수를 상위 디렉토리의 페이지에 전달하는 방법은 무엇입니까?

때로는 하위 도메인에 속하지 않는 파일에 링크해야합니다.

예를 들어 내 "subdomain1.mysite.org"에는 "www.mysite.org/login.php"에 대한 링크가 있습니다. "login.php"는 하위 도메인에 해당하는 모든 하위 디렉토리를 포함하는 디렉토리에 저장됩니다.

"www.mysite.org/login.php"에 대한 링크를 다음과 같이 지정하면 href='../login.php'으로 작동하지 않습니다. 브라우저가 "subdomain1.mysite.org/../login.php"에 액세스하려고하기 때문에. 이 문제를 해결하기 위해이 방법으로 링크를 만듭니다 : href='http://www.mysite.org/login.php'하지만이 방법으로 새 ​​세션에 내 세션 변수를 전달할 수 없다고 생각합니다 (그럴 수 있습니까?).

그래서 내 문제는 부모 디렉터리 또는 다른 도메인에있는 페이지에있는 페이지에 세션 변수를 전달하는 방법을 찾을 수 없다는 것입니다. 아무도이 문제를 어떻게 해결할 수 있는지 알고 있습니까? 권장

내가 피곤 문제를 해결하기 위해 session_set_cookie_params를 사용하여,

을 추가했습니다. 그러나 나는 여전히 원하는 결과를 얻을 수 없다.

내가 다음 코드를 사용 subdomain1.mysite.org 콘텐츠를 생성하는 index.php 파일이

: 나중에보다

session_set_cookie_params(24*60*60,'/','.mysite.org'); 
session_start(); 
$_SESSION['page'] = $PHP_SELF; 

를 동일한 파일에 내가 중 하나에 대한 링크를 만드는 자세한 내용은에서 나는 다음을 수행 내 페이지 (나는 문제가 여기에있을 수 있다고 생각한다). "A"와 "B"사이에 아무것도

session_set_cookie_params(24*60*60,'/','.mysite.org'); 
session_start(); 
print "a".$_SESSION['page']."b"; 

결과로 : 나는 다음과 같은 코드를 가지고있는 login.php 파일에서

href='http://www.mysite.org/login.php' 

: 나는 다음과 같은 방법으로 링크를 만들 수 있습니다. 그래서 한 페이지에서 다른 페이지로 세션 변수를 전달할 수 없습니다. 아무도 내가 뭘 잘못하고 있는지 알아?

session_set_cookie_params 전에 session_name("some_name");

:

내가 다음 줄을 추가하면 내 문제가 해결된다 '라고해야 2 을 추가했다.

+0

쿠키를 사용하는 경우 제대로 작동하는 것 같습니다. http://stackoverflow.com/questions/644920/allow-php-sessions-to-carry-over-to-subdomains – GWW

답변

4

PHP INI에서 세션 도메인을 ".mysite.org"로 설정하면 여러 도메인간에 세션을 공유 할 수 있습니다. 관련 변수는 다음과 같습니다

session.cookie_domain

당신은 또한 session_set_cookie_params() 기능을 스크립트 내에서 설정할 수 있습니다.

편집 - 하위 도메인이 동일한 서버에있는 경우에만 작동한다는 점에 유의해야합니다.

+0

mysql 연결을 통해 세션을 사용하여 작업 할 수도 있다고 생각 했습니까? 그렇다면 다중 서버도 지원되어야합니다. (그것은 단지 추측입니다. 실수 한 경우 알려주십시오.) – xorinzor

+0

@xorinzor 문제는 브라우저가 기본적으로 www.mysite.org의 쿠키 만 설정합니다. somethingelse.mysite.org를 탐색하면 브라우저가 쿠키에서 키를 전달하지 않기 때문에 세션이 서버에 저장되어 있는지 여부는 중요하지 않습니다. – Cfreak

0

세션을 이와 같이 공유 할 수 없다는 것이 맞습니다. 그러나 하위 도메인을 통해 사용자 데이터를 공유 할 보안 쿠키를 사용할 수 있습니다 : 당신이 쿠키를 설정할 때

http://us3.php.net/manual/en/function.setcookie.php

확실 도메인 매개 변수를 확인

".mysite.org" 

같은 그런 다음 당신이 할 수 있습니다입니다 mysite의 하위 도메인에서 쿠키에 액세스하십시오.org

+0

을 사용하면 부분적으로 .mysite.org를 사용하는 것이 옳지 만 세션에도 설정할 수 있습니다. . 내 대답을 보라. – Cfreak

+0

@cfreak - 와우는 당신이 이것으로 도망 칠 수 있다는 것을 몰랐습니다! 업데이트 주셔서 감사합니다. – Oliver

관련 문제