session_regenerate_id(true); 이 함수는 세션 ID를 새로 바꿔주는 함수 입니다.
그런데 킴스큐에서는 위의 코드가 제대로 작동하지 않더군요.
그냥 아래 내용으로 1.php 파일을 만들어 놓고 실행하면 counter가 잘 올라갑니다.
<?php
session_start();
if(!$_SESSION['test']) $_SESSION['test'] = 1;
print_r($_SESSION);
session_regenerate_id(true);
++$_SESSION['test'];
?>
하지만 킴스큐에 session_regenerate_id 이 함수를 쓰면 작동이 안됩니다.
원인을 알아본 결과
index.php 소스 최상단의
session_save_path('./_tmp/session');
이것이 문제 였습니다.
session_regenerate_id 이 함수는 session_save_path 함수에서 절대 경로를 사용해야한다고 나와있더군요
참조 링크
http://grokbase.com/t/php/php-bugs/067cqxaqm6/38085-new-session-regenerate-id-clashes-with-session-save-path
index.php 상단의
session_save_path('./_tmp/session');
이것을
session_save_path(getcwd().'/_tmp/session');
이렇게 변경하니 잘 작동 되더군요.
그리고 보안 문제로 인해서 로그인 한후 세션 id를 바꿔줘야 해서 파일에 위의 session_regenerate_id 를 추가했습니다.
http://www.kimsq.co.kr/r/issue/13146
'PHP > PHP함수' 카테고리의 다른 글
ini_set("display_errors", 1) (0) | 2017.11.16 |
---|---|
session_cache_limiter (0) | 2017.11.15 |
sprintf(), hash(), uniqid(); (0) | 2017.11.13 |
$_SERVER 함수 (0) | 2017.11.13 |
define() 초기설정값 셋팅 (1) | 2017.11.12 |