2009-11-24 3 views
3

나는 유지 관리하도록 지정된 시스템에 큰 문제가 있습니다.다른 시스템에 대해 동일한 세션 변수

실제로는 인트라넷을 통한 많은 시스템입니다.

문제는 원래 프로그래머가 인트라넷 용으로 많은 시스템을 만들었습니다.이 시스템은 모두 사용자 이름, 패스, db 매개 변수 등이 $ _SESSION 변수에 저장되는 스크립트를 통해 데이터베이스에 연결됩니다.

사용자가 탭에서 한 시스템에 로그인 한 다음 다른 시스템의 다른 탭을 열고 세션 변수를 덮어 쓰면 첫 번째 시스템에서 작업을 계속할 수 없기 때문에 문제가 발생합니다.

수십 개의 앱이 있다는 점을 고려하면 ... 기존 앱을 변경하지 않고 어떻게 해결할 수있을 것이라고 생각하십니까?

감사합니다.

답변

2

GET 얻을 이후는 서버도 여러 관계없이 작동 할 수 있어야합니다.

한 가지 방법은 app1.myoffice.local, app2.myoffice.local 등과 같은 하위 도메인을 사용하는 것입니다. 브라우저는 도메인간에 세션 쿠키를 공유하지 않습니다.

다른 트릭은 세션 쿠키 경로를 /에서 하위 폴더로 변경하는 것입니다.myoffice.local/app1/의 세션 쿠키는 /app1/으로 제한하고, myoffice.local/app2/의 쿠키는 /app2/으로 제한해야합니다.

session_start()을 호출하기 전에 session_set_cookie_params() 또는 ini_set() 함수를 통해이 설정을 PHP에서 변경할 수 있다고 생각합니다.

1

세션 네임 스페이스를 설정하려고 할 때 가장 좋은 방법은 세션 네임 스페이스를 설정하는 것입니다. 각 최대 세션에 대한 업데이트를 보낼 때 그러니까 기본적으로, 당신 세션 데이터가 그런 ... 같은

array("app1" => array(), "app2" => array(), "app3" => array()) 

을 보일 것, 값은 각각 "앱 컨테이너"

0

이동 각 응용 프로그램에 추가 할 것 자체 하위 도메인을 만들고 세션 쿠키가 공유되지 않는지 확인하십시오. 그러면 사용자는 각 앱에 대해 별도의 세션을 갖게됩니다.

0

이 당신을 도울 수 있습니다

http://www.decodephp.com/2006/11/16/php-sessions-across-subdomains-the-multiple-servers-issue/

하나의 예를 거기에서 :이 문제에없는 매우 침습적 솔루션을 만들기 위해 관리

.

mod-rewrite와 php image 조작과 관련하여 다소 진보 된 의미입니다. 내가 한 방식은 이미지를 사용하는 것이 었습니다. 예를 들어 http://something.com/something/spacer.jpg 스크립트 set_cookies.php? perv_id = 1234 & 스크롤 모드 - 재 작성을 얻는다 = & right_scroll = 바로 & mascot_header 왼쪽 = 당신은 그것을이를 던질 때 더 다음 가 ABC에 쿠키를 설정하지 않습니다. domain.com xyz.domain.com.

set_cookies.php는 cookeis를 설정하고 1x1 화이트 이미지를 가져와 을 표시합니다. 쿠키 9 개를 설정하면 내 페이지에 9 픽셀의 작은 점이 생깁니다. 저도 같은 서버에서이 작업을 하지만 변수는 통과 당신은 세션을 조작 할 수있는 방법을 찾을 필요가

관련 문제