2014-03-04 3 views
0

나는 내가 너무 좋아한다 세션의 이름을 설정하는 $oldSession = session_name("mySessName");을 사용할 수 있습니다 알고 :여러 세션이

# FileName: sessionTest.php 
$old_name = session_name("TEST1"); 
session_start(); 
$_SESSION["Bar"]="bar"; 
print_r($_SESSION); 

나는 sessionTest.php와 sessionTest1.php 사이를왔다 갔다 할 수 있으며 세션에는 해당 변수 만 있습니다.

다른 스크립트가 이미 세션을 시작한 다음이 파일을 호출한다고 가정합니다. 내가보고 있어요 것은 내가 있다고 가정입니다 : 이것은 Array("foo" => "foo", "hi" => "hi")를 인쇄

session_name("other"); 
session_start(); 
$_SESSION["foo"] = "foo"; 
require_once "sessionTest.php"; 
print_r($_SESSION); 

. 이전 세션을 종료하고 새로운 세션을 시작하는 방법이 있습니까? 참고 : 중요한 정보가있을 수 있으므로 이전 세션을 삭제하고 싶지 않습니다.

+0

내가'session_name()가'당신이 찾고있는 기능이라고 생각합니다. – barell

+1

위의 session_name을 사용하고 있습니다. – ajon

답변

2

내가하는 일은 내 세션 1 레이어를 표준보다 더 깊게 만드는 것입니다. 그래서 배열의 레이어를 사용할 수 있습니다.

일부 페이지 :

<?php 
     $_SESSION['myApp1']['hi'] = "Hi"; 
    ?> 

다른 페이지 : 내가 세션을 표시 할 때

<?php 
     $_SESSION['myApp2']['ciao'] = "Ciao"; 
?> 

그래서 2 페이지으로 session_start 전에 난 그냥

<?php 
    echo "<pre>"; 
    print_r($_SESSION['myApp2']); 
    echo "</pre>"; 

?> 
+0

이것은 좋은 해결책입니다 ... 잠재적으로 데이터를 덮어 쓸 $ _SESSION 변수의 맨 아래 계층에 동일한 appname을 사용하는 각 앱에 여전히 취약합니다. 나는 session_name이 당신 자신의 세션 환경을 가질 수 있다고 알고 있지만, session_start가 이미 호출 된 경우에는 작동하지 않는 것처럼 보입니다. – ajon

0

사용 session_name에 바르.

PHP session_name

세션 이름이 요청 시작시 session.name에 저장된 기본값으로 재설정됩니다

. 따라서 모든 요청에 ​​대해 (그리고 session_start() 또는 session_register()가 호출되기 전에) session_name()을 호출해야합니다.

이 그렇게 대답 읽어

Multiple Sessions

+0

예, 알고 있습니다 ... 세션 시작 전에 session_name을 사용하고 있지만, 다른 페이지가 내 세션을 포함하고 이미 세션을 시작하면 어떻게 될까요? 그래서 질문은 이전 세션을 어떻게 끝내지 만 (파기하지 않고), 세션을 시작하고 시작할 수있게됩니다. 나는 성공없이 session_write_close()를 시도했다. – ajon

+0

게시하기 전에 해당 질문을 읽었습니다. app1과 app2가 상호 작용하면 해당 솔루션이 작동하지 않습니다. 이 페이지가로드 될 때 세션이 시작되지 않으면 정상적으로 작동합니다. session_start()는 세션이 이미 시작된 경우 아무 것도하지 않는 것으로 보입니다. – ajon

+0

나는 너를 위해 중대한 응답을 발견 할 수 없다 나는 찾고있다 .... – bart2puck

관련 문제