strstr()은 일치하는 부분 문자열 전체를 반환하므로 존재 여부만 체크할 때는 메모리 할당이 낭비됨. strpos()는 위치(int) 또는 false만 반환하여 메모리 할당 없이 더 빠르게 동일 동작 수행. 적용 파일 (19개, 약 25곳): - lib/common.lib.php: wr_option html1/html2/secret 검사 3곳 - lib/shop.lib.php: de_taxsave_types 검사 2곳 - lib/latest.lib.php: wr_option secret 검사 1곳 - lib/thumbnail.lib.php: wr_option secret 검사 1곳 - lib/URI/uri.class.php: URI 확장자 검사 1곳 - bbs/view.php: subject/wr_option/content 검사 4곳 - bbs/view_comment.php: wr_option secret 검사 1곳 - bbs/search.php: wr_option/sfl 검사 3곳 - bbs/rss.php: wr_option html 검사 1곳 - bbs/write_update.php: html1/html2 검사 2곳 - bbs/move_update.php: wr_option html 검사 1곳 - adm/admin.lib.php: auth 권한 검사 1곳 - adm/admin.head.php: 메뉴 권한 검사 1곳 - adm/session_file_delete.php: sess_ prefix 검사 1곳 - adm/point_list.php, adm/auth_list.php: sfl mb_id 검사 2곳 - adm/sms_admin/_common.php: install.php 검사 1곳 - adm/shop_admin/configform.php: de_taxsave_types 검사 3곳 - head.sub.php: admin dir 검사 1곳 규칙: strstr($a, $b) → strpos($a, $b) !== false !strstr($a, $b) → strpos($a, $b) === false 제외: - theme/, skin/, plugin/ (사용자 커스터마이징/서드파티) - strstr() 반환값을 실제로 사용하는 케이스 (예: lib/common.lib.php:4135 if( \$freg = strstr(\$ori_params, '#') ), extend/gif2mp4.extend.php)
60 lines
1.8 KiB
PHP
60 lines
1.8 KiB
PHP
<?php
|
|
$sub_menu = "100800";
|
|
include_once("./_common.php");
|
|
|
|
if ($is_admin != "super")
|
|
alert("최고관리자만 접근 가능합니다.", G5_URL);
|
|
|
|
$g5['title'] = "세션파일 일괄삭제";
|
|
include_once("./admin.head.php");
|
|
?>
|
|
|
|
<div class="local_desc02 local_desc">
|
|
<p>
|
|
완료 메세지가 나오기 전에 프로그램의 실행을 중지하지 마십시오.
|
|
</p>
|
|
</div>
|
|
|
|
<?php
|
|
flush();
|
|
|
|
$list_tag_st = "";
|
|
$list_tag_end = "";
|
|
if (!$dir=@opendir(G5_DATA_PATH.'/session')) {
|
|
echo "<p>세션 디렉토리를 열지못했습니다.</p>";
|
|
} else {
|
|
$list_tag_st = "<ul class=\"session_del\">\n<li>완료됨</li>\n";
|
|
$list_tag_end = "</ul>\n";
|
|
}
|
|
|
|
$cnt=0;
|
|
echo $list_tag_st;
|
|
while($file=readdir($dir)) {
|
|
|
|
if (strpos($file,'sess_') === false) continue;
|
|
if (strpos($file,'sess_')!=0) continue;
|
|
|
|
$session_file = G5_DATA_PATH.'/session/'.$file;
|
|
|
|
if (!$atime=@fileatime($session_file)) {
|
|
continue;
|
|
}
|
|
if (time() > $atime + (3600 * 6)) { // 지난시간을 초로 계산해서 적어주시면 됩니다. default : 6시간전
|
|
$cnt++;
|
|
$return = unlink($session_file);
|
|
//echo "<script>document.getElementById('ct').innerHTML += '{$session_file}<br/>';</script>\n";
|
|
echo "<li>{$session_file}</li>\n";
|
|
|
|
flush();
|
|
|
|
if ($cnt%10==0)
|
|
//echo "<script>document.getElementById('ct').innerHTML = '';</script>\n";
|
|
echo "\n";
|
|
}
|
|
}
|
|
echo $list_tag_end;
|
|
echo '<div class="local_desc01 local_desc"><p><strong>세션데이터 '.$cnt.'건 삭제 완료됐습니다.</strong><br>프로그램의 실행을 끝마치셔도 좋습니다.</p></div>'.PHP_EOL;
|
|
?>
|
|
|
|
<?php
|
|
include_once("./admin.tail.php");
|