2012-09-09 3 views
0

세션 변수에 문제가 있습니다. 문제는 세션 변수를 사용하면 일정 기간 후에 사용자가 페이지 또는 그와 비슷한 것을 새로 고치면 정의되지 않은 색인이 있음을 알리는 통지를 표시하기 시작한다는 것입니다.토큰을 세션 변수에 추가하는 방법은 무엇입니까?

이제 세션 변수를 사용하고 싶지만 세션을 더 오래 유지하려면 어떻게해야합니까? 나는 우리 개발자들이 토큰과 같은 것을 사용할 수 있다고 들었다. 따라서 사용자가 하루나 이틀 또는 그 이상 유휴 상태가 되어도 페이지를 새로 고치거나 다른 페이지로 이동할 때 정의되지 않은 색인 알림이 나타나지 않도록 할 수있다. 화면에.

누구나 토큰 사용에 관한 예가 있습니까?

감사

+0

나는 완전히 따라합니다 - 당신은 브라우저가 열려 있다고 말하는가? 쿠키를 사용하고 싶지 않다는 말씀입니까? 나는 적어도 대답이 무엇인지를 도울 것입니다. – MazB

+0

@MazB 설명하기는 어렵지만 오랜 시간이 지나면 PHP 세션 변수를 사용하여 세션이 만료됩니다. 그래서 세션 변수를 오래도록 만듦으로써 어떻게 즉시 사라지는 지 알고 싶습니다. 토큰이라고 생각하지만 잘 모르겠습니다. 그것이 쿠키라면 쿠키는 브라우저에서만 설정됩니까? – user1653070

+0

흠 - 예. 이 설명서에 대답하는 방법을 모르므로 설명서를 살펴 보겠습니다. 나는 php.ini 파일에 접근 할 수 없다면 사용할 수있는 ini_set() 명령어가 있어야한다고 생각했을 것이다. 그래서 최대 세션 타임 아웃이나 무엇인가를 설정한다. 나는 찾고있다 ... – MazB

답변

1

세션 변수는 세션에 있습니다 - 기본적으로 그들은 짧은 수명 (20 분 정도)이있다.

세션이 만료되면 세션 변수를 사용하려고 할 때 세션 변수에 대한 알림이 표시되기 시작합니다 (적어도 알림을 사용하는 오류보고가있는 경우). I가 두 개 또는 세에 세션의 수명을 설정하도록 권하고 싶지 않다,

if(! isset($_SESSION['my_var'])) 
{ 
    // This session doesn't exist anymore - I'd better head over to the start page... 
    header('Location: index.php'); 
    exit; 
} 

을 지금 :와 그렇지 않은 경우를 처리 -

일반적으로, 세션 변수가 존재하는지 확인 일. 대신, setting cookies를 살펴보고 이들 각각에 대한 내용과 수명을 정의한다 : 당신이 위로 확인하지 않는 경우

setcookie('my_var', 'My Value', time() + 60 * 60 * 24 * 3); // a cookie lasting three days 

비록을, 당신은 앞으로 일에 공지 사항과 같은 문제가있을 것입니다 쿠키의 존재 여부 :

if(! isset($_COOKIES['my_var'])) 
{ 
    // This cookie doesn't exist anymore - I'd better head over to the start page... 
    header('Location: index.php'); 
    exit; 
} 
+0

위 답변 Repox - 여기에 몇 가지 정보가 있습니다 : http://stackoverflow.com/questions/156712/php-what-is-the-default-lifetime-of-a-session 시간 제한에 대해 언급 한 내용을 자세히 설명합니다. – MazB

+0

나는 당신의 연결 고리를 보았습니다. 나는 아직도 수명을 2 ~ 3 일로 연장하는 것이 나쁜 선택이라고 생각합니다. – Repox

+0

일반적으로 DB 또는 쿠키를 사용하는 것이 더 좋은 옵션이라고 생각합니다. 나는 그들이하는 일을 알지 못하면서 판단하기가 어렵다. 거기에는 아주 독특한 시스템이있다. – MazB

관련 문제