<?php // (2020.10.4, 차재복, Cha Jae Bok, cjbword@gmailcom)
# 세션 스타트 (매 웹페이지 마다 필요)
session_start();
# db 접속, title, html 헤더부 (utf-8 선언), 모바일 셋팅
include_once "../base_utils/config.php";
# 전달 변수 처리
$mod = $_REQUEST[mod];
$mod = substr($mod,0,10); // 해킹 방지 (글자 수 제한)
$mod = mysqli_real_escape_string($dbi, $mod); // 해킹 방지 (SQL Injection 대비 escape 처리)
$mid = $_REQUEST[mid];
if ( isset($_REQUEST[mid]) and !empty($mid) and !is_numeric($mid) or $mid<0 ) exit; // 해킹방지 (수치>0)
$mid = substr($mid,0,10); // 해킹 방지 (글자 수 제한)
// 출력 화면 선택 (history or table)
$ch = $_REQUEST[ch];
$cur_page = $_GET['p']; // 요청 페이지 번호
if ( !empty($cur_page) and !is_numeric($cur_page) ) exit; // 해킹 방어
if ( empty($cur_page) ) $cur_page = 1; // 디폴트 페이지 번호
// 머리글,바닥글 표출 유무
$bare = $_REQUEST[bare];
# style
echo "<link rel='stylesheet' type='text/css' href='../open_src/open_src_files.css' />";
# Javascript/jQuery
if(empty($mid)) {
// jquery api 원본 다운로드
echo "<script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js'></script>";
// jquery 기능 구현 소스 불러오기
echo "<script type='text/javascript' src='../open_src/open_src_files_list.js' charset='UTF-8'></script>";
}
# 상단 제목줄
if (empty($bare)) {
$title = '소스 변경이력 목록';
include "../base_utils/top_section.php";
// 구분선
echo "<hr style='clear:both;margin-top:10px;'>";
}
# 소스 목록 자세히 보여주기
if ( $ch == 'history' or empty($ch) ) {
// 페이지 구분 관련 함수 라이브러리 가져오기
include "../paging/paging_utils.php";
// 최근 날짜순 소스 리스트 출력하는 함수 호출
src_history_print($cur_page, $ch, $dbi);
} else if ( $ch == 'table' ) {
// 소스 목록 함수 라이브러리 가져오기
include_once "../open_src/open_src_files_utils.php";
// src_list_print(), table_display()
// 소스 목록을 테이블 형태로 출력하는 함수 호출
src_list_print($mid, $dbi);
}
# 하단
if (empty($bare)) {
// 구분선
echo "<hr style='clear:both;'>";
// 저작권
include "../base_utils/copyright.php";
// 소스 개방
// include "../open_src/open.php";
// 구분선
echo "<hr>";
}
# 통계처리 요청 (stat_page)
include "../base_utils/stat_utils.php";
html_access('open_src_files_list.php',$dbi);
# 최근 수정 소스 리스트 보여주기 함수 루틴 -------------------
function src_history_print($cur_page, $ch, $dbi) {
// 페이지 당 출력 레코드 수
$page_records = 10;
// 전체 레코드 수 계산
$query = "select fno from src_files order by date desc";
$total_records = total_records ($query, $dbi);
// 페이지 정보 함수 호출을 위한 매개변수 배열화
$page_info_vars = array (
'dbi' => $dbi, // db resource
'total_records' => $total_records, // 전체 레코드 수
'cur_page' => $cur_page, // 현재 페이지 번호
'page_records' => $page_records // 페이지 당 출력 레코드 수
);
// 페이지 정보 함수 호출
$pages = page_info ($page_info_vars);
$total_pages = $pages['total_pages'];
$start_record = $pages['start_record'];
echo "<br><br>";
// 페이지 이동 안내 (상단)
page_display ($cur_page, $total_pages, 'open_src_files_list.php?');
echo "<br><br>";
// 해당 페이지 쿼리문
$query = "select fno,dir,filename,date,run,expr
from src_files
order by date desc
limit $start_record, $page_records";
// 쿼리 실행
$result=mysqli_query($dbi, $query);
if (mysqli_errno($dbi)) { echo mysqli_errno($dbi)." : ".mysqli_error($dbi)."\n";}
// 레코드별로 가져와서 화면에 출력함
echo "<table id='history'>";
$i = 1;
while ( $matched = mysqli_fetch_assoc($result) ) {
echo "<tr>";
echo "<td>";
// 날짜
echo date_format(date_create($matched[date]),"Y-m-d");
echo "</td><td style='padding:5px;'>";
// 디렉토리
echo ( empty($matched[dir]) ? "/" : "/".$matched[dir]."/" );
// 파일명
echo "<a href='../open_src/view_src.php?file={$matched[filename]}&dir={$matched[dir]}'>";
echo $matched[filename];
echo "</a>";
echo "</td><td style='padding-right:5px;'>";
if (!empty($matched[run])) echo "<a href='../{$matched[dir]}/{$matched[filename]}'>실행</a>";
echo "</td><td>";
echo $matched[expr];
echo "</td>";
echo "</tr>";
$i = $i + 1 ;
}
echo "</table>";
echo "<br>";
// 페이지 이동 안내 (하단)
// page_display ($cur_page, $total_pages, "open_src_files_list.php?ch={$ch}");
page_display ($cur_page, $total_pages, "open_src_files_list.php?");
echo "<br><br>";
}
?>
"본 웹사이트 내 모든 저작물은 원출처를 밝히는 한 자유롭게 사용(상업화포함) 가능합니다"