애드온의 php에서
setCookie('CheckOnceRedirect', 'YES', $calc_time, '/');
$calc_time 은 계산된 초의 숫자가 담겨져 있습니다.
$called_position === 'before_module_init
위 시점에서는 쿠키나 세션 생성이 안되는건가요???
PHP | PHP 7.2 |
---|---|
CMS | Rhymix 2.x |
애드온의 php에서
setCookie('CheckOnceRedirect', 'YES', $calc_time, '/');
$calc_time 은 계산된 초의 숫자가 담겨져 있습니다.
$called_position === 'before_module_init
위 시점에서는 쿠키나 세션 생성이 안되는건가요???
일단 가장 흔한 시나리오는 아래의 두 가지입니다.
1. 쿠키를 굽기 전에 이미 내용이 출력되어서 더이상 쿠키를 구울 수 없는 상황인 경우
2. $calc_time에 유닉스 타임스탬프가 아닌 상대값(15분, 24시간, 30일 등)을 넣으신 경우
if ($called_position === 'before_module_init' )
{
$end_time = strtotime(date("Y-m-d", strtotime("+1 day") ) ." 00:00:00 ");
$now_time = time();
$calc_time = $end_time - $now_time;
setCookie('CheckOnceRedirect', 'YES', $calc_time, '/');
}
1번에 해당 되는 케이스 인가요?
$calc_time 값은 유닉스타임으로 확인했습니다.
두 개의 유닉스 타임스탬프를 생성한 후, 둘의 차이를 계산하여 $calc_time에 담으셨으니
$calc_time은 유닉스 타임스탬프가 아니라 그냥 몇만 초에 불과하겠지요.
요즘 기준으로 정상적인 유닉스 타임스탬프라면 16억 초가 넘습니다.
차이를 계산하지 말고 $end_time을 그대로 넣으셔야 합니다.
아... 방금 먼저 달아주신 댓글 보고 눈치를 챘습니다.
저게 절대 시간을 넣어주어야 하는것이군요. 이제 해결할 수 있을 것 같습니다. 감사합니다!!!
만료시간에 넣는 값이 현재시간에 얼마나 유지되는 시간이냐의 값인줄 착각했네요.
쿠키나 세션은 index.php 읽어들일때부터 이미 가지고 있습니다.
세션은 서버쪽에 데이터가 있고, 쿠키는 브라우저쪽에 있습니다.
그 값들을 서로 서버와 브라우저간의 통신하는 것인데 그 값들이 어느 콜포지션이냐에 따라 로딩이 안된다거나 틀리거나 그렇지 않아요.
index.php 실행시점부터 이미 데이터는 다 들어가있지요.
뭔가 셋이 안되고 잇다면 그건 어딘가 세팅이 잘못되어있다는 뜻인 것 같아요.
세션이나 쿠키값은 언제든지 값이 변하거나 왼만하면 안변하니까요.(세션은 끊어지면 없어지긴하지만)