2017-11-21 4 views
0

저는 프로젝트에서 일하고 PHP 세션을 사용하여 정보를 저장합니다. 한 스크립트에서 나는 session_start()로 세션을 시작하고 $ _SESSION [ 'var']을 생성합니다. 다른 스크립트에서이 변수를 얻고 싶지만 새로운 sessionid를 가진 session_start()와 새로운 세션을 만들 것입니다. 거기에 무슨 일이 일어 났는지 확실하지 않습니다. 왜 한 프로젝트에 두 개의 서로 다른 세션을 만들 것입니까? 그것을 고치는 방법?PHP는 두 개의 다른 세션을 만듭니다.

일부 PHP 구성 매개 변수 :

session.use_cookies = 1 
session.use_only_cookies = 1 
session.use_trans_sid = 0 
expose_phps= On 

sessionid를 쿠키를 사용합니다.

안부,

+4

이 일어날 수있는 많은 이유가있다을 시도 할 수 있습니다. 일부 페이지의 접두사가 'www'이고 접미사가 아닌 페이지가있는 경우 서버는이를 다른 웹 사이트로 해석하고 다른 세션을 할당합니다. 사이트의 일부가 SSL을 사용하고 일부가 SSL을 사용하지 않으면 세션도 다를 수 있습니다. 최종 사용자가 다른 브라우저 또는 장치를 사용하는 경우 다른 세션을 사용하게됩니다. 귀하의 질문에서 해당 사항이 적용되는지 여부를 알 수 없습니다. – mopsyd

+0

지원해 주셔서 감사합니다. 단 하나의 도메인이고 다른 디렉토리이며 SSL은 현재 사용되지 않습니다. 다른 도메인의 다른 서버에서는 코드가 제대로 작동하지만 구성에 문제가있을 수 있습니까? –

+0

브라우저 콘솔에서 쿠키를 확인하고 PHPSESSID에 다른 해시 값이 있는지 확인하십시오. 이렇게하면 문제가 서버 구성 문제 (다른 경우) 또는 코드 논리 문제 (그렇지 않은 경우) 여부를 알 수 있습니다. 동일한 경우 코드 논리에서 여전히 문제 일 수 있지만 훨씬 적습니다. – mopsyd

답변

0
<?php  
session_id("session1"); 
session_start(); 
echo session_id(); 
$_SESSION["name"] = "1"; 
echo "<pre>", print_r($_SESSION, 1), "</pre>"; 
session_write_close(); 

session_id("session2"); 
echo session_id(); 
session_start(); 
$_SESSION["name"] = "2"; 
echo "<pre>", print_r($_SESSION, 1), "</pre>"; 
session_write_close(); 

session_id("session1"); 
echo session_id(); 
session_start(); 
echo "<pre>", print_r($_SESSION, 1), "</pre>"; 
session_write_close(); 

session_id("session2"); 
echo session_id(); 
session_start(); 
echo "<pre>", print_r($_SESSION, 1), "</pre>"; ?> 

출력 :

session1 

Array 
(
    [name] => 1 
) 

session2 

Array 
(
    [name] => 2 
) 

session1 

Array 
(
    [name] => 1 
) 

session2 

Array 
(
    [name] => 2 
) 

당신은 그런 식으로

관련 문제