나는 foo.com을 운영합니다. 나는 foo.com에 살고있는 두 개의 다른 응용 프로그램을 가지고 있습니다 : 하나는 foo.com/bar이고, 다른 하나는 foo.com/example입니다. 세션을 사용하여 로그인하는 동안 사용자에 대한 정보를 추적하지만 사용자가 foo.com/bar에서 foo.com/example로 이동하면 foo.com/example은 사용자가 foo.com/에서 시작한 세션을 봅니다. 정보를 사용합니다. 내 질문은, 어떻게 동시에 두 개의 서로 다른 세션을 각 디렉토리에 사용할 수 있습니까?동일한 도메인에 두 개의 서로 다른 세션이 있습니다.
답변
같은 세션을 사용할 수도 있지만 원하는 변수 이름을 변경할 수 있습니다.
편집 : 죄송합니다. 귀하의 질문에 답변을 드리지 못해 죄송하지만 다른 해결책이 있습니다.
이것은 최고의 솔루션 인 것 같습니다. 감사. – Matthew
Matthew에게 감사드립니다. 귀하의 질문에 대답한다면 '답변'으로 표시하는 것을 잊지 마십시오. :) – user103219
투표 한 응답이 가장 좋습니다. 가장 좋은 방법은 'session_name'입니다. – joryl
session_set_cookie_params을 사용하여 저장할 세션의 도메인과 폴더를 설정할 수 있습니다. IE :
// Used on foo.com/example
session_set_cookie_params(86400, '/example');
// Used on foo.com/bar
session_set_cookie_params(86400, '/bar');
이것은 작동하지 않습니다. 나는 성공하기 전에 그것을 시도했다. 내 글로벌 php.ini 설정과 관련이있을 수 있습니다. – Matthew
후행 백 슬래시를 경로에 추가하려면 이 필요합니다. 그것 없이는 확실히 작동하지 않을 것입니다. –
php.ini에 액세스 할 수있는 경우 'session.cookie_path'매개 변수를 직접 설정해보십시오.이 매개 변수는이 함수가 재정의해야 할 사항입니다. php.ini 파일에 대한 액세스 권한이없는 경우 ini_set()을 사용할 수도 있습니다. –
또 다른 해결책은 foo.com/bar의 모든 세션 값을 "bar_"및 foo.com/example과 "example_"으로 미리 보류하여 세션 내에서 네임 스페이스를 효과적으로 생성하는 것입니다.
지루한 일이 없도록하는 방법은이 기능을 함수 또는 클래스 메서드로 추상화하는 것입니다. 예 :
function set_session_value($key, $value) {
//figure out which prefix to use by checking the current working
//directory, or whatever method you like. set $prefix equal to
// "bar_" or "example_".
$_SESSION[$prefix . $key] = $value;
}
일치하는 기능으로 값을 가져옵니다.
이 주요 이점은/bar에서 프로그래밍 할 때/in example에서 사용하는 변수 이름을 생각할 필요가 없다는 것입니다. 다른 하나는 세션 값을 저장하는 방법을 변경하기로 결정한 경우 모든 것을 한 곳에서 쉽게 변경할 수 있다는 것입니다.
session_start를 호출하기 전에 session_name으로 전화해야합니다. 이것은 세션을 식별하는 데 사용되는 쿠키의 이름을 설정합니다 (기본값은 PHPSESSID 임).
각 응용 프로그램마다 다른 이름을 사용하십시오. 세션 내 변수를 망칠 필요가 없습니다.
나는 이것이 오래되었음을 알고 있지만 누군가가 도움이 될 수 있다고 생각했습니다. 이 예제는 관리 영역에 대해 별도의 세션을 설정하는 방법을 보여줍니다.
if ($_SERVER['REQUEST_URI'] == '/admin/'):
$session_name = 'session1';
else:
$session_name = 'session2';
endif;
session_start($session_name);
지금까지 제공되는 솔루션과 관련된 잠재적 보안 의미를 강조하는 것이 매우 중요하다고 생각합니다. 저는 약 5 년간 웹 애플리케이션 침투 테스터로 일했으며이 시간에 수많은 취약한 보안 애플리케이션을 개발하여 IT 보안을 시작한 후배의 교육을 지원했습니다.
나는 방금 제공되는 솔루션을 테스트 해왔고 그 중 어느 것도 이웃 앱에 속한 세션에 대한 액세스를 차단하지 못한다고 언급했습니다. session_name()과 다른 세션 식별자 이름을 사용한다고해서 사용자가이 식별자의 값을 사용하는 것은 금지되지 않습니다. PHP에는 각 세션 식별자 이름에 대한 분리 저장 공간이 없습니다. 다른 세션 이름을 사용하고 브라우저의 쿠키 경로를 설정하는 두 개의 앱이있었습니다. 다음 각각의 설정 - 쿠키 지시어는 HTTP 응답에 포함되었다 :
Set-Cookie: TESTONE=<value one>; path=/testone/
Set-Cookie: TESTTWO=<value two>; path=/testtwo/
모두 애플 리케이션은 완전히 별도의 사용자를 가지고 누군가는, 그들은 /testone/
애플 리케이션에 따라에 대한 정보를 액세스 할 수있다 /testtwo/
응용 프로그램에 대한 액세스 권한을 가지고 있다면 세션 매개 변수가 처리되는 방식.아래의 코드 예는 인증 성공 후 두 앱이 모두 $_SESSION["authenticated"]
매개 변수를 사용한다고 가정 할 때 잠재적 인 데이터 유출을 보여줍니다.
<?php
session_name("TESTONE");
ini_set("session.cookie_path","/testone/");
session_start();
if ($_SESSION["authenticated"] == "yes")
echo $topsecretinfo;
?>
이
$topsecretinfo
하나에만
/testtwo/
응용 프로그램에 인증 자신의
TESTTWO
세션 식별자의 값을 가져 와서
/testone/
응용 프로그램에 요청을 보낼 때
TESTONE
세션 식별자의 값으로 사용하기 위해 필요에 액세스하려면. PHP 세션 조회 프로세스는 해당 값의 구문 분석을 제외한 세션 식별자의 이름을 인식하지 못합니다. 즉 "agcy648dja6syd8f93"의 세션 식별자 값은이를 참조하는 데 사용 된 이름과 관계없이 동일한 세션 객체를 반환합니다.
- 1. 두 개의 서로 다른 관계가있는 두 개의 리소스가 있습니다.
- 2. OpenId를 사용하여 동일한 도메인에 두 개의 다른 Drupal 설치
- 3. 두 개의 서로 다른 금액
- 4. 두 개의 서로 다른 서버 간의 세션.
- 5. 동일한 서버에있는 서로 다른 두 개의 DB에있는 테이블의 외래 키
- 6. ASP는 두 개의 서로 다른 씨앗
- 7. 두 개의 서로 다른 URL을 사용하여 동일한 git 리모컨으로 푸시
- 8. 두 개의 iPad가 서로 이야기하고 있습니다.
- 9. 두 개의 서로 다른 도메인에서 단일 세션
- 10. 동일한 테이블에있는 두 개의 서로 다른 값을 기준으로 카운터를 가져옵니다.
- 11. axis2 : 동일한 이름을 가진 두 개의 서로 다른 웹 서비스
- 12. 동일한 양식을 사용하는 두 개의 다른 페이지에 대해 두 개의 서로 다른 레이블을 설정하십시오 - symfony
- 13. 같은 페이지에 두 개의 서로 다른 jQuery UI 테마가 있습니다.
- 14. 두 개의 서로 다른 소스 폴더,
- 15. 두 개의 서로 다른 두 개의 div에서 OnClick
- 16. 두 개의 서로 다른 배열의 동일한 키에있는 서로 다른 값의 차이 백분율
- 17. MySQL은 계산과 두 개의 서로 다른 테이블
- 18. Cakephp 두 개의 서로 다른 위치/도메인에있는 두 개의 데이터베이스
- 19. 두 개의 서로 다른 서브넷 컴퓨터 연결
- 20. 삭제가 가능한 두 개의 서로 다른 장소
- 21. SQL : 두 개의 서로 다른 테이블
- 22. SQLite는이> 두 개의 서로 다른 점
- 23. 두 개의 서로 다른 행에 구문이 있습니까?
- 24. 나는 두 개의 서로 다른 장고 프로젝트를
- 25. 두 개의 서로 다른 접촉을 감지하는 방법
- 26. 두 개의 서로 다른 JFrames 사이의 통신?
- 27. 설명하고 두 개의 서로 다른 값
- 28. 두 개의 서로 다른 레이아웃의 QRadioButtons
- 29. 서로 다른 색상의 동일한 그래프에 두 개의 트 리 서프 그래프가 있습니다.
- 30. 두 개의 다른 페이지에 두 개의 텍스트 상자가 있습니다.
django 기반 프로젝트에서 동일한 기능을 수행하려면 어떻게해야합니까? – Dania