유

그누보드 최신버전 (5.1.0) 살펴보기 - common.php (5)

· 2015-08-24 (월) 19:22:47 · 3789 · 5

그누보드 최신버전 (5.1.0) 살펴보기 - common.php (5)

 

 

 

common.php 그누보드에서 가장 기본이 되는 파일이라고 볼수 있습니다.

 

모든 파일에 기본적으로 인클루드 되어서 사용됩니다.

 

에러출력 설정, 보안적인 처리, 기본적인 경로 설정, 디비연결, 세션 설정및 시작, 공용변수의 초기화 및 재설정, 기타 확장 등의 내용으로 이루어져 있습니다.

 

 

 

@ini_set("session.use_trans_sid", 0);

@ini_set("url_rewriter.tags","");

 

session_save_path(G5_SESSION_PATH);

 

if (isset($SESSION_CACHE_LIMITER))

    @session_cache_limiter($SESSION_CACHE_LIMITER);

else

    @session_cache_limiter("no-cache, must-revalidate");

 

ini_set("session.cache_expire", 180);

ini_set("session.gc_maxlifetime", 10800); 

ini_set("session.gc_probability", 1); 

ini_set("session.gc_divisor", 100); 

 

session_set_cookie_params(0, '/');

ini_set("session.cookie_domain", G5_COOKIE_DOMAIN);

 

@session_start();

 

 

 

ini_set 은 php.ini 에 설정할수 있는 환경설정값을 php 실행시에 현재 접속에 대해서만 설정 하는 함수 입니다.

이 함수는 서버의 설정에 따라 사용이 금지 되어 있을수도 있고, php 버전에 따라 설정할수 있는 옵션의 차이도 있을수도 있습니다.

따라서 @를 항상 앞에 붙이는 것이 좋다고 보여집니다.

 

http://php.net/manual/kr/function.ini-set.php

 

string ini_set ( string $varname , string $newvalue )

 

 

 

세션 관련 환경 설정값은

http://php.net/manual/kr/session.configuration.php

에 잘 나와있습니다.

 

session.use_trans_sid -> url 을 통해서 세션아이디(기본 - PHPSESSID)​ 를 전달 할수 있느냐 여부, false(0) 은 불가 true(1) 은 가능

보안상 크게 좋을것이 없으므로 0 또는 false 를 설정합니다.

 

url_rewriter.tags -> php 가 html 출력시에 세션아이디(기본 - PHPSESSID) 를 각 태그의 src 나 href 같은 속성에 자동으로 넣을수 있도록 설정하는 것입니다. 

보안상 크게 좋을것이 없으므로 아무값도 설정하지 않습니다.

 

session.save_path -> 세션을 저장하는 매체를 파일로 사용중일 경우, 세션파일이 저장될 기본 위치를 지정합니다.

session_save_path() 함수를 통해 설정가능하므로, 그누보드에서는 session_save_path() 을 사용

 

session.cache_limiter -> 세션을 사용하는 페이지의 캐시 제어 방법을 지정, nocache, private, private_no_expire, public 중 하나 사용가능

session_cache_limiter() 함수를 통해 설정가능하므로, 그누보드에서는 session_cache_limiter() 을 사용

그런데, http://php.net/manual/kr/function.session-cache-limiter.php 에서 보는 바와 같이 같은 하나만 설정할수 있으므로

@session_cache_limiter("no-cache, must-revalidate"); 은 잘 못 되었고,

@session_cache_limiter("nocache"); 와 같이 사용하는 것이 맞습니다.

 

nocache 로 설정했을때 출력되는 헤더, 캐시 사용하지 않음

Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0

 

public 로 설정했을때 출력되는 헤더, 캐시 프록시, 클라이언트 모두 사용

Cache-Control: public, max-age=10800

 

private 로 설정했을때 출력되는 헤더, 캐시 클라이언트만 사용

Cache-Control: private, max-age=10800, pre-check=10800

 

session.cache_expire -> 세션을 사용하는 페이지의 캐시가 살아있을 시간을 분으로 설정, session_cache_limiter("nocache"); 일때는 의미가 없습니다.

출력되는 헤더 중 Cache-Control 에 max-age=(session.cache_expirer값 * 60), pre-check=(session.cache_expirer값 * 60) 와 같이 추가로 나옵니다.

 

session.gc_maxlifetime -> 세션을 파일로 사용 할경우 세션파일을 지울 시간을 초로 설정, 디비로 사용할 경우라면 해당 로우를 지울 시간을 초로 설정, 접속이 종료되고 난 이후에 동작합니다.

윈도우에서 세션을 파일로 사용할 경우에는 파일의 atime(수정시간)을 알수 없으므로 의미 없습니다.

 

session.gc_probability -> 이미 session.gc_maxlifetime 초를 지난 세션을 수거하는 확률을 지정, 분자에 해당

1 을 설정하면 session.gc_divisor분의 1 즉, session.gc_divisor 을 100로 설정했다면, 실행시 1%의 확률로 동작합니다.

 

session.gc_divisor -> 이미 session.gc_maxlifetime 초를 지난 세션을 수거하는 확률을 지정, 분모에 해당

100 을 설정하면 100분의 session.gc_probability 즉, session.gc_probability 을 1로 설정했다면, 실행시 1%의 확률로 동작합니다.

 

session.cookie_domain -> 세션 쿠키를 공유할 도메인 설정, 도메인 앞에 . 을 붙여 설정하면 그 도메인의 서브도메인과도 세션 쿠키가 공유됩니다.

 

void session_set_cookie_params ( int $lifetime [, string $path [, string $domain [, bool $secure [, bool $httponly ]]]] )

 

첫번째 인자 $lifetime 은 session.gc_maxlifetime 와 같은 의미입니다. session.gc_maxlifetime와 같게 설정하면 됩니다.

두번째인자 $path 는 세션쿠키가 작동할 도메인의 경로. 도메인의 모든 경로에 적용하려면 하나의 슬래시('/')를 사용합니다.

세번째인자 $domain 은 session.cookie_domain 와 같은 의미입니다.

네번째인자 $secure 는 true 설정시 세션쿠키는 안전한 접속으로만 전송됩니다.

다섯번째인자 $httponly 는 true 설정시 헤더의 쿠키 부분에 httponly 라고 같이 전송됩니다.

$path, $domain, $secure, $httponly 생략가능합니다. 

|

댓글 5개

바쁘신데 고맙습니다.
네 감사합니다.
수고하셨습니다.^^
감사합니다^^
좋은 강좌 감사합니다~^^
댓글을 작성하시려면 로그인이 필요합니다.

프로그램

8,188건
+
제목 글쓴이 날짜 조회
15-12-13 조회 2,445
15-12-13 조회 2,854
15-12-11 조회 2,479
15-12-11 조회 2,453
15-12-11 조회 2,457
15-12-10 조회 2,422
15-12-10 조회 2,503
15-12-10 조회 2,474
15-12-03 조회 3,099
15-12-03 조회 2,608
15-11-25 조회 2,668
15-11-09 조회 2,890
15-11-04 조회 2,803
15-06-09 조회 3,980
15-05-06 조회 4,985
15-03-28 조회 4,229
14-12-05 조회 4,785
14-10-25 조회 4,879
14-10-13 조회 4,111
14-10-03 조회 5,833
14-09-19 조회 4,622
14-09-18 조회 3,918
14-09-13 조회 4,463
14-09-03 조회 5,440
14-08-26 조회 4,036
14-08-26 조회 3,761
14-08-26 조회 3,865
14-08-11 조회 6,203
14-08-06 조회 4,001
14-08-06 조회 3,593
14-08-06 조회 3,584
14-08-01 조회 5,927
14-08-01 조회 3,714
14-07-30 조회 4,156
14-06-28 조회 4,991
14-06-28 조회 4,278
14-05-11 조회 4,445
14-05-09 조회 4,658
14-05-09 조회 7,565
14-04-30 조회 3,929
14-04-27 조회 4,036
14-04-25 조회 4,705
14-04-21 조회 3,651
14-04-21 조회 4,881
14-04-10 조회 4,396
14-04-01 조회 6,042
14-03-03 조회 3,283
14-02-25 조회 5,758
14-02-14 조회 5,033
14-02-13 조회 4,624
14-01-03 조회 4,338
13-12-06 조회 3,673
13-11-22 조회 5,448
13-11-18 조회 3,859
13-10-02 조회 4,182
13-10-02 조회 3,592
13-10-02 조회 3,870
13-10-02 조회 3,730
13-10-02 조회 3,942
13-09-16 조회 7,832
13-09-16 조회 5,228
13-08-18 조회 5,248
13-07-11 조회 3,933
13-07-10 조회 4,540
13-07-09 조회 4,439
13-07-09 조회 4,842
13-07-04 조회 4,321
13-07-04 조회 3,980
13-07-04 조회 4,013
13-07-01 조회 4,592
13-07-01 조회 4,368
13-07-01 조회 6,584
13-06-23 조회 4,234
13-06-05 조회 3,543
13-05-29 조회 4,638
13-05-10 조회 4,172
13-04-05 조회 4,781
13-04-05 조회 6,455
13-04-05 조회 1.1만
13-04-05 조회 6,974
13-04-05 조회 6,481
13-03-31 조회 5,623
13-03-31 조회 4,048
13-03-28 조회 4,427
13-03-28 조회 6,515
13-03-28 조회 9,112
13-03-28 조회 4,246
13-03-24 조회 3,826
13-03-21 조회 4,498
13-03-21 조회 1.7만
13-03-14 조회 3,667
13-03-10 조회 4,629
13-03-10 조회 4,354
13-03-10 조회 4,032
13-03-08 조회 5,159
13-03-08 조회 4,280
13-03-03 조회 4,903
13-03-03 조회 7,356
13-03-03 조회 3,985
13-03-03 조회 1.1만