테스트 사이트 - 개발 중인 베타 버전입니다

간단하게 관리자 접속로그를 남겨보자.

간장게장같은남자
· 1년 전 · 1466 · 10

1028841244_1722210167.6154.png

 

https://sir.kr/qa/540002

이 QA 보다가 간단하게 만들어보면 어떨가 싶어서 만들어봤습니다.

관리자 페이지 접근 기준으로 만들었고, 하단에 테마에 적용하는 방법도 만들어봤습니다.

아파치로그를 아예 때려넣는 방법도 생각해봤는데 DB 용량이 기하급수적으로 찰까봐서요 ㅎ
이것도 많이 차지할거 같기는 한데 전체 유저가 아니라 관리자만 남기게 해서 크게 차진 않을거같습니다.

필요하신분들은 사용하시고 DB 수시로 초기화 시키시면 될 듯 합니다.
 

로그 삭제 기능적으로 넣을수는 있는데..

해커가 진짜로 들어왔다는 가정하게 로그를 삭제할수도 있어서..

삭제기능은 뺐습니다.

 

로그 삭제를 원하시면 DB 콘솔이나 phpmyadmin 에서
truncate table g5_admin_log;

한줄 입력해주시면 됩니다.

 

/adm/admin.head.php 에 상단 ?> 바로 위에 아래 코드를 넣어줍니다

 

[code]
$db_admin_log_check = sql_fetch("SHOW TABLES LIKE 'g5_admin_log'"); // 테이블 존재 여부
if(!$db_admin_log_check) { // 없으면
    sql_query("CREATE TABLE `g5_admin_log` (
                  `idx` int(11) NOT NULL AUTO_INCREMENT,
                  `ip` varchar(50) NOT NULL,
                  `path` varchar(255) NOT NULL,
                  `menu` varchar(255) NOT NULL,
                  `regdate` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
                  PRIMARY KEY (`idx`)
               );"); // DB 서버 설정에 맞게 테이블이 생성 됨
} else { // 있으면
    sql_query("INSERT INTO `g5_admin_log` (`idx`, `ip`, `path`, `menu`, `regdate`) VALUES (NULL, '".$_SERVER['REMOTE_ADDR']."', '".$_SERVER['REQUEST_URI']."', '".$g5['title']."', '".G5_TIME_YMDHIS."');"); // 로그 남김
}
[/code]


위에껄로 안되면 아래껄로 시도해보시기 바랍니다.
 

[code]
$db_admin_log_check = sql_fetch("SELECT COUNT(*) as cnt FROM Information_schema.tables WHERE table_schema = 'DB명' AND table_name = 'g5_admin_log'"); // 테이블 존재 여부
if($db_admin_log_check['cnt']=="0") { // 없으면
    sql_query("CREATE TABLE `g5_admin_log` (
                  `idx` int(11) NOT NULL AUTO_INCREMENT,
                  `ip` varchar(50) NOT NULL,
                  `path` varchar(255) NOT NULL,
                  `menu` varchar(255) NOT NULL,
                  `regdate` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
                  PRIMARY KEY (`idx`)
               );"); // DB 서버 설정에 맞게 테이블이 생성 됨
} else { // 있으면
    sql_query("INSERT INTO `g5_admin_log` (`idx`, `ip`, `path`, `menu`, `regdate`) VALUES (NULL, '".$_SERVER['REMOTE_ADDR']."', '".$_SERVER['REQUEST_URI']."', '".$g5['title']."', '".G5_TIME_YMDHIS."');"); // 로그 남김
}
[/code]

정 안되면 create 쿼리문만 복사하셔서 테이블 생성하시고 insert 문 쿼리만 붙여넣으시면 됩니다.

admin.menu100.php 에 매뉴 출력을 위해 해당 라인을 추가해줍니다.

[code]
array('100940', '관리자 로그',        G5_ADMIN_URL . '/admin_log.php',       'admin_log')
[/code]

동봉된 첨부파일을 /adm/ 폴더에 넣어줍니다.
이후 접속하시면 됩니다 :)

 

혹 일반페이지에서도 로그 작성을 원하시면
테마폴더의 head.php ?> 바로 윗라인에 아래와 같이 $is_admin 으로 감싸서 넣으시면 됩니다.


[code]

if($is_admin) {
    $db_admin_log_check = sql_fetch("SHOW TABLES LIKE 'g5_admin_log'"); // 테이블 존재 여부
    if(!$db_admin_log_check) { // 없으면
        sql_query("CREATE TABLE `g5_admin_log` (
                  `idx` int(11) NOT NULL AUTO_INCREMENT,
                  `ip` varchar(50) NOT NULL,
                  `path` varchar(255) NOT NULL,
                  `menu` varchar(255) NOT NULL,
                  `regdate` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
                  PRIMARY KEY (`idx`)
                   );"); // DB 서버 설정에 맞게 테이블이 생성 됨
    } else { // 있으면
        sql_query("INSERT INTO `g5_admin_log` (`idx`, `ip`, `path`, `menu`, `regdate`) VALUES (NULL, '".$_SERVER['REMOTE_ADDR']."', '".$_SERVER['REQUEST_URI']."', '".$g5['title']."', '".G5_TIME_YMDHIS."');"); // 로그 남김
    }
}
[/code]


간단하게 만들어보았는데 추가 로그를 확인하고 싶으신분은

코멘트 남겨주시면 업데이트 해보겠습니다 ㅎ

----------------------------------------------------

## 2024-07-29 19:00:00 내용 수정 
CREATE TABLE 선언 쿼리 내용을 수정했습니다. ( idx 필드 primary key 선언 + AUTO_INCREMENT 선언 )
해당 시간 이전에 적용하신 분들은 테이블 삭제후에 다시 적용해주세요!

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

댓글 10개

감사합니다^^

1년 전

감사합니다. 일단 설치까지는 했는데 기록이 안됩니다. ㅠㅠ

admin.head.php 상단위에 넣었는데 안되네요. 5.6 버전 사용중 입니다.

간장게장같은남자
1년 전

@페레이라 

1. 테이블이 제대로 생성됐는지 확인해주세요

2. 로그가 남겨져 있는지 확인해주세요.
로그가 안남겨지면 SHOW TABLES LIKE 'g5_admin_log' 이거 문제일 가능성이 큰데..

위의 show tables 쿼리가 먹지 않으면 아래 쿼리로 수정해서 넣어줘보세요.


[code]
SELECT COUNT(*) FROM Information_schema.tables WHERE table_schema = 'DB명' AND table_name = '테이블명'
[/code]

3. 그래도 안되면 mysql create 선언문을 복사하시고 밑에 
[code]
sql_query("INSERT INTO `g5_admin_log` (`idx`, `ip`, `path`, `menu`, `regdate`) VALUES (NULL, '".$_SERVER['REMOTE_ADDR']."', '".$_SERVER['REQUEST_URI']."', '".$g5['title']."', '".G5_TIME_YMDHIS."');"); 
[/code]
이 부분만 admin.head.php 에 넣어주세요

1년 전

@간장게장같은남자 

테이블 설치는 되었습니다.

 

시키는데로 3번을 해도 동일 합니다.

이유를 모르겠네요. 안돼면 한번 재설치 해보겠습니다.

간장게장같은남자
1년 전

@페레이라 아 DB 생성쪽에 문제가 있네요 ㅠㅠ 글 수정하겠습니다.

간장게장같은남자
1년 전

@페레이라 내용 수정했습니다!
테이블 생성쿼리에 primary key 하고 AUTO_INCREMENT 설정을 빠트렷네요 ㅠ

1년 전

@간장게장같은남자 

감사합니다. 너무 잘됩니다 ㅎㅎ

1년 전

수고 하셨습니다.

감사합니다

간장게장같은남자
1년 전

혹시 원하시는 팁이 있으시면 말씀해주세요~
제작의뢰에 갈만큼 어려운것이 아니면 뚝딱 만들어보겠습니다 ㅎ

게시글 목록

번호 제목
22569
22566
22565
22559
22530
22527
22525
22521
22518
22506
22500
22490
22487
22481
22480
22473
22471
22468
22453
22449
22440
22436
22435
22415
22407
22404
22376
22364
22362
22353