2016-06-22 2 views
-1

블로그 웹 사이트가 있습니다. 웹 사이트 상단의 깃발을 클릭하여 언어를 변경할 수 있습니다. 영어 또는 스페인어를 선택하면 페이지가 해당 언어로 변경됩니다.
그러나 메뉴 항목을 클릭하면 웹 사이트 언어가 기본 언어로 되돌아 가고 클릭 한 언어로 유지되지 않습니다.페이지가 변경되면 PHP 세션이 항상 시작됩니다.

내가 선택한 언어 값을 Session에 넣었지만 다른 페이지를 클릭하면 값이 손실됩니다.

내 session_id()가 항상 변경되는 것을 볼 수 있습니다. 세션은 항상 시작됩니다. 여기

은 홈페이지 내 세션 테스트 코드입니다

ob_start(); 
if (session_status() == 1) {  //or if(isset($_SESSION)) both of them not work and session_start() command work. 
    session start(); 
    echo 'started'; 
} 
echo " SESSION ID VALUE: ".session_id()." .Session Status:".session_status(); 

출력 : (당신이 웹 사이트에서 볼 수)

세션 ID 값 시작 : 5d7e8cacfde4bc87f6e55b4fcddd5af7 세션을 STATUS2/

제 호스트는 godaddy입니다. 나는 그들에게 그것을 고쳐달라고했지만 그들은이 규범을 발전 시켰고 그들은 보지 못했다고 말했다. 내가 뭘해야할지 모르겠다. session_path가/tmp이고 쓰기가 가능하고 쓰기가 is_writable(ini_set("session_path"))입니다.

+0

브라우저 개발자 도구를 열고 네트워크 패널을 선택하면, 당신은 세션 ID 쿠키 헤더를 볼 수 있습니까? 요청과 응답 모두에 있습니까? 언제 바뀌나요? –

답변

2

항상 session_start()를 실행해야합니다. 세션이 생성되면 이미 생성 된 세션을 사용하고, 그렇지 않으면 새로운 세션을 생성합니다.

또한 session_status에서 하드 코딩 된 값이 아닌 PHP 상수와 비교해야합니다.

session_status() === PHP_SESSION_NONE

http://php.net/manual/en/function.session-status.php

+0

나는 session_start() 명령이 작동 할 때 새로운 세션을 시작하고 새로운 ID를 주었다. 그래서 나는 세션 상태를 사용했다. – melihbasbug

+0

이것은 중요한 정보이지만 질문에 어떻게 대답하는지 이해할 수 없다. 'PHP_SESSION_NONE'은 1은 현재의 모든 PHP 버전 ([demo] (https://3v4l.org/SO2Cr))과 원래 코드 (아무리 복잡하지 않든)가 결국'session_start()'를 호출합니다. 문제의 코드가 작동하지 않는 이유는 무엇입니까? –

+0

안녕하세요 알바로, PHP_SESSION_NONE과 비교하면 효과가 있다는 말은 아닙니다. 하드 코딩 된 값 대신 상수를 사용하는 것이 좋습니다. –

관련 문제