본문 바로가기

PHP/PHP함수

session_regenerate_id

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