이번시간에는 설치때 만든 어드민 아이디로 로그인해서 게시판을 생성하고 또 그 게시판의 설정을 변경하는 부분을 만들어 보겠습니다.

우선 로그인 페이지 입니다.

<?
// 1. 공통 인클루드
include "./inc/config.php";

// 2. 로그인 입력 HTML
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr">
<title></title>
</head>
<table style="width:1000px;height:50px;border:5px #CCCCCC solid;">
    <tr>
        <td align="center" valign="middle" colspan="3" style="font-zise:15px;font-weight:bold;">
        PHPer's Heaven 설치형게시판 관리자
        </td>
    </tr>
</table>
<br/>
<table style="width:1000px;height:50px;border:5px #CCCCCC solid;">
    <tr>
        <td align="center" valign="middle" style="font-zise:15px;font-weight:bold;">관리자 로그인</td>
    </tr>
</table>
<br/>
<form name="loginForm" method="post" action="./admin_login_chk.php" style="margin:0px;">
<table style="width:1000px;height:50px;border:0px;">
    <tr>
        <td align="center" valign="middle" style="width:200px;height:50px;background-color:#CCCCCC;">아이디</td>
        <td align="left" valign="middle" style="width:800px;height:50px;"><input type="text" name="m_id" style="width:380px;"></td>
    </tr>
    <tr>
        <td align="center" valign="middle" style="width:200px;height:50px;background-color:#CCCCCC;">비밀번호</td>
        <td align="left" valign="middle" style="width:800px;height:50px;"><input type="password" name="m_pass" style="width:380px;"></td>
    </tr>
    <!-- 3. 로그인 버튼 클릭시 입력필드 검사 함수 login_chk 실행 -->
    <tr>
        <td align="center" valign="middle" colspan="2"><input type="button" value=" 로그인 " onClick="login_chk();"></td>
    </tr>
</table>
</form>
<script>
// 4.입력필드 검사함수
function login_chk()
{
    // 6.form 을 f 에 지정
    var f = document.loginForm;

    // 7.입력폼 검사
    if(f.m_id.value == ""){
        // 8.값이 없으면 경고창으로 메세지 출력 후 함수 종료
        alert("아이디를 입력해 주세요.");
        return false;
    }

    if(f.m_pass.value == ""){
        alert("비밀번호를 입력해 주세요.");
        return false;
    }

    // 9.검사가 성공이면 form 을 submit 한다
    f.submit();

}
</script>
[admin_login.php 소스]

로그인 체크 페이지
<?
// 1. 공통 인클루드 파일
include "./inc/config.php";

// 2. 로그인한 회원은 뒤로 보내기
if($_SESSION[user_id]){
    alert("로그인 하신 상태입니다.");
}

// 3. 넘어온 변수 검사
if(trim($_POST[m_id]) == ""){
    alert("아이디를 입력해 주세요.");
}

if($_POST[m_pass] == ""){
    alert("비밀번호를 입력해 주세요.");
}

// 4. 같은 아이디가 있는지 검사
$chk_sql = "select * from bd__member where m_id = '".trim($_POST[m_id])."'";
$chk_result = sql_query($chk_sql);
$chk_data = mysql_fetch_array($chk_result);

// 5. 아이디가 존재 하는 경우
if($chk_data[m_idx]){

    // 5. 입력된 비밀번호와 저장된 비밀번호가 같은지 비교해서
    if($_POST[m_pass] == $chk_data[m_pass]){
        // 6. 비밀번호가 같으면 세션값 부여 후 이동
        $_SESSION[user_idx] = $chk_data[m_idx];
        $_SESSION[user_id] = $chk_data[m_id];
        $_SESSION[user_name] = $chk_data[m_name];
        $_SESSION[user_level] = $chk_data[m_level];

        alert("환영합니다.", "./admin_index.php");
    }else{
        // 7. 비밀번호가 다르면
        alert("비밀번호가 다릅니다.");
    }
}else{
    // 8. 아이디가 존재하지 않으면
    alert("존재하지 않는 회원입니다.");
}
?>
[admin_login_chk.php 소스]

다음은 로그인한 후의 공통 head 부분입니다.

<?
include "./inc/config.php";

if(!$_SESSION[user_id] || $_SESSION[user_level] < 9){
    alert("어드민 아이디로 로그인하여 주시기 바랍니다.", "./admin_login.php");
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr">
<title></title>
</head>
<table style="width:1000px;height:50px;border:5px #CCCCCC solid;">
    <tr>
        <td align="center" valign="middle" colspan="3" style="font-zise:15px;font-weight:bold;">
        PHPer's Heaven 설치형게시판 관리자
        </td>
    </tr>
    <tr>
        <td align="center" valign="middle" style="font-size:12px;"><a href="./admin_board_list.php">게시판목록</a></td>
        <td align="center" valign="middle" style="font-size:12px;"><a href="./admin_member_list.php">회원목록</a></td>
        <td align="center" valign="middle" style="font-size:12px;"><a href="./admin_logout.php">로그아웃</a></td>
    </tr>
</table>
[admin_head.php 소스]

로그아웃 페이지입니다.
<?
// 1. 공통 인클루드 파일
include "./admin_head.php";

// 2. 모든 세션값을 빈값으로
$_SESSION[user_idx] = "";
$_SESSION[user_id] = "";
$_SESSION[user_name] = "";
$_SESSION[user_level] = "";

alert("로그아웃이 되었습니다.", "./admin_login.php");
?>
[admin_logout.php 소스]

이제 로그인은 다 되었습니다.

이제 게시판 목록을 출력하고 각 게시판의 생성 및 설정을 변경하는 부분을 만들어 보겠습니다.

게시판 목록
<?
// 1. 공통 인클루드 파일
include "./admin_head.php";

// 2. 페이지 변수 설정
if($_GET[page] && $_GET[page] > 0){
    // 현재 페이지 값이 존재하고 0 보다 크면 그대로 사용
    $page = $_GET[page];
}else{
    // 그 외의 경우는 현재 페이지를 1로 설정
    $page = 1;
}
// 한 페이지에 보일 글 수
$page_row = 10;
// 한줄에 보여질 페이지 수
$page_scale = 10;
// 페이징을 출력할 변수 초기화
$paging_str = "";

// 3. 전체 게시판 갯수 알아내기
$sql = "select count(*) as cnt from bd__board_config where 1";
$total_count = sql_total($sql);

// 4. 페이지 출력 내용 만들기
$paging_str = paging($page, $page_row, $page_scale, $total_count);

// 5. 시작 열을 구함
$from_record = ($page - 1) * $page_row;

// 6. 글목록 구하기
$query = "select * from bd__board_config where 1 order by bc_idx desc limit ".$from_record.", ".$page_row;
$data = sql_list($query);
?>
<br/>
<table style="width:1000px;height:50px;border:5px #CCCCCC solid;">
    <tr>
        <td align="center" valign="middle" style="font-zise:15px;font-weight:bold;">게시판 목록</td>
    </tr>
</table>
<br/>
<table cellspacing="1" style="width:1000px;height:50px;border:0px;background-color:#999999;">
    <tr>
        <td align="center" valign="middle" width="5%" style="height:30px;background-color:#CCCCCC;">번호</td>
        <td align="center" valign="middle" width="20%" style="height:30px;background-color:#CCCCCC;">게시판코드</td>
        <td align="center" valign="middle" width="45%" style="height:30px;background-color:#CCCCCC;">게시판이름</td>
        <td align="center" valign="middle" width="30%" style="height:30px;background-color:#CCCCCC;">게시판관리자</td>
    </tr>
<?
if($total_count > 0){
    for($i=0;$i<count($data);$i++){
?>
    <tr>
        <td align="center" valign="middle" style="height:30px;background-color:#FFFFFF;"><?=($total_count - (($page - 1) * $page_row) - $i )?></td>
        <td align="center" valign="middle" style="height:30px;background-color:#FFFFFF;"><a href="./admin_board_modify.php?bc_idx=<?=$data[$i][bc_idx]?>&page=<?=$page?>"><?=$data[$i][bc_code]?></a></td>
        <td align="center" valign="middle" style="height:30px;background-color:#FFFFFF;"><a href="./admin_board_modify.php?bc_idx=<?=$data[$i][bc_idx]?>&page=<?=$page?>"><?=$data[$i][bc_name]?></a></td>
        <td align="center" valign="middle" style="height:30px;background-color:#FFFFFF;"><?=$data[$i][bc_admin]?></td>
    </tr>
<?
    }
}else{?>
    <tr>
        <td align="center" valign="middle" colspan="4" style="height:50px;background-color:#FFFFFF;">게시판이 하나도 없습니다.</td>
    </tr>
<?}?>
</table>
<br/>
<table style="width:1000px;height:50px;">
    <tr>
        <td align="center" valign="middle"><?=$paging_str?></td>
    </tr>
    <tr>
        <td align="center" valign="middle"><input type="button" value=" 게시판생성 " onClick="location.href='./admin_board_insert.php';"></td>
    </tr>
</table>
[admin_board_list.php 소스]

게시판 생성 페이지
<?
// 1. 공통 인클루드 파일
include "./admin_head.php";

// 2. 입력 HTML 출력
?>
<br/>
<table style="width:1000px;height:30px;border:5px #CCCCCC solid;">
    <tr>
        <td align="center" valign="middle" style="font-zise:15px;font-weight:bold;">게시판 생성</td>
    </tr>
</table>
<br/>
<form name="bWriteForm" method="post" enctype="multipart/form-data" action="./admin_board_insert_save.php" style="margin:0px;">
<table style="width:1000px;height:30px;border:0px;">
    <tr>
        <td align="center" valign="middle" style="width:200px;height:30px;background-color:#CCCCCC;">게시판코드</td>
        <td align="left" valign="middle" style="width:800px;height:30px;"><input type="text" name="bc_code" style="width:780px;"></td>
    </tr>
    <tr>
        <td align="center" valign="middle" style="width:200px;height:30px;background-color:#CCCCCC;">게시판이름</td>
        <td align="left" valign="middle" style="width:800px;height:30px;"><input type="text" name="bc_name" style="width:780px;"></td>
    </tr>
    <tr>
        <td align="center" valign="middle" style="width:200px;height:30px;background-color:#CCCCCC;">게시판 상단이미지</td>
        <td align="left" valign="middle" style="width:800px;height:30px;"><input type="file" name="bc_head_file" size="80"></td>
    </tr>
    <tr>
        <td align="center" valign="middle" style="width:200px;height:30px;background-color:#CCCCCC;">게시판상단내용</td>
        <td align="left" valign="middle" style="width:800px;height:100px;"><textarea name="bc_head" style="width:800px;height:100px;"></textarea></td>
    </tr>
    <tr>
        <td align="center" valign="middle" style="width:200px;height:30px;background-color:#CCCCCC;">게시판하단내용</td>
        <td align="left" valign="middle" style="width:800px;height:100px;"><textarea name="bc_tail" style="width:800px;height:100px;"></textarea></td>
    </tr>
    <tr>
        <td align="center" valign="middle" style="width:200px;height:30px;background-color:#CCCCCC;">게시판하단이미지</td>
        <td align="left" valign="middle" style="width:800px;height:30px;"><input type="file" name="bc_tail_file" size="80"></td>
    </tr>
    <tr>
        <td align="center" valign="middle" style="width:200px;height:120px;background-color:#CCCCCC;">권한설정</td>
        <td align="left" valign="middle" style="width:800px;height:120px;">
        목록 레벨 : <select name="bc_list_level">
        <?for($i=0;$i<=9;$i++){?>
            <option value="<?=$i?>"><?=$i?></option>
        <?}?>
        </select><br>
        읽기 레벨 : <select name="bc_read_level">
        <?for($i=0;$i<=9;$i++){?>
            <option value="<?=$i?>"><?=$i?></option>
        <?}?>
        </select><br>
        쓰기 레벨 : <select name="bc_write_level">
        <?for($i=0;$i<=9;$i++){?>
            <option value="<?=$i?>"><?=$i?></option>
        <?}?>
        </select><br>
        답글 레벨 : <select name="bc_reply_level">
        <?for($i=0;$i<=9;$i++){?>
            <option value="<?=$i?>"><?=$i?></option>
        <?}?>
        </select><br>
        댓글 레벨 : <select name="bc_comment_level">
        <?for($i=0;$i<=9;$i++){?>
            <option value="<?=$i?>"><?=$i?></option>
        <?}?>
        </select>
        </td>
    </tr>
    <tr>
        <td align="center" valign="middle" style="width:200px;height:30px;background-color:#CCCCCC;">게시판 관리자ID</td>
        <td align="left" valign="middle" style="width:800px;height:30px;"><input type="text" name="bc_admin" style="width:780px;"></td>
    </tr>
    <tr>
        <td align="center" valign="middle" style="width:200px;height:30px;background-color:#CCCCCC;">파일 업로드 사용</td>
        <td align="left" valign="middle" style="width:800px;height:30px;"><input type="checkbox" name="bc_use_file" value="1"> 사용</td>
    </tr>
    <tr>
        <td align="center" valign="middle" style="width:200px;height:30px;background-color:#CCCCCC;">비밀글 사용</td>
        <td align="left" valign="middle" style="width:800px;height:30px;"><input type="checkbox" name="bc_use_secret" value="1"> 사용</td>
    </tr>
    <tr>
        <td align="center" valign="middle" style="width:200px;height:30px;background-color:#CCCCCC;">답글 사용</td>
        <td align="left" valign="middle" style="width:800px;height:30px;"><input type="checkbox" name="bc_use_reply" value="1"> 사용</td>
    </tr>
    <tr>
        <td align="center" valign="middle" style="width:200px;height:30px;background-color:#CCCCCC;">댓글 사용</td>
        <td align="left" valign="middle" style="width:800px;height:30px;"><input type="checkbox" name="bc_use_comment" value="1"> 사용</td>
    </tr>
    <!-- 3. 생성 버튼 클릭시 입력필드 검사 함수 write_save 실행 -->
    <tr>
        <td align="center" valign="middle" colspan="2"><input type="button" value=" 게시판생성 " onClick="write_save();">&nbsp;&nbsp;&nbsp;<input type="button" value=" 뒤로가기 " onClick="history.back();"></td>
    </tr>
</table>
</form>
<script>
// 4.입력필드 검사함수
function write_save()
{
    // 5.form 을 f 에 지정
    var f = document.bWriteForm;

    // 6.입력폼 검사

    if(f.bc_code.value == ""){
        alert("게시판코드를 입력해 주세요.");
        return false;
    }

    if(f.bc_name.value == ""){
        alert("게시판이름을 입력해 주세요.");
        return false;
    }

    // 7.검사가 성공이면 form 을 submit 한다
    f.submit();

}
</script>

[admin_board_insert.php 소스]



여기서 전에 없었던 부분은 form 태그의 enctype="multipart/form-data" 부분입니다.
이것은 파일을 업로드 하기위해서 필요한 부분입니다.

게시판 생성 저장 페이지
<?
// 1. 공통 인클루드 파일
include "./admin_head.php";

// 2. 넘어온 변수 검사
if(trim($_POST[bc_code]) == ""){
    alert("게시판코드를 입력해 주세요.");
}

$sql = "select * from bd__board_config where bc_code = '".trim($_POST[bc_code])."'";
$data = sql_fetch($sql);
if($data[bc_idx]){
    alert("이미 존재하는 게시판입니다.");
}

if(trim($_POST[bc_name]) == ""){
    alert("게시판이름을 입력해 주세요.");
}



// 3. 파일 저장 디렉토리 검사 후 없으면 생성
$dir = "./data/board_config";
if(!is_dir($dir)){
    @mkdir($dir, 0707);
    @chmod($dir, 0707);
}

// 4. 파일이 jpg나 gif 인지 검사
if($_FILES[bc_head_file][tmp_name]){
    if($_FILES[bc_head_file][type] == "image/gif" || $_FILES[bc_head_file][type] == "image/jpeg"){
        $bc_head_file = $_FILES[bc_head_file][name];
    }else{
        $bc_head_file = "";
    }
}
if($_FILES[bc_tail_file][tmp_name]){
    if($_FILES[bc_tail_file][type] == "image/gif" || $_FILES[bc_tail_file][type] == "image/jpeg"){
        $bc_tail_file = $_FILES[bc_tail_file][name];
    }else{
        $bc_tail_file = "";
    }
}


// 5. 게시판 저장
$sql = "insert into bd__board_config set
        bc_code = '".trim($_POST[bc_code])."',
        bc_name = '".trim($_POST[bc_name])."',
        bc_head_file = '".$bc_head_file."',
        bc_head = '".$_POST[b_title]."',
        bc_tail_file = '".$bc_tail_file."',
        bc_tail = '".$_POST[bc_tail]."',
        bc_list_level = '".$_POST[bc_list_level]."',
        bc_read_level = '".$_POST[bc_read_level]."',
        bc_write_level = '".$_POST[bc_write_level]."',
        bc_reply_level = '".$_POST[bc_reply_level]."',
        bc_comment_level = '".$_POST[bc_comment_level]."',
        bc_admin = '".$_POST[bc_admin]."',
        bc_use_file = '".$_POST[bc_use_file]."',
        bc_use_secret = '".$_POST[bc_use_secret]."',
        bc_use_reply = '".$_POST[bc_use_reply]."',
        bc_use_comment = '".$_POST[bc_use_comment]."'
        ";
sql_query($sql);


// 6. 저장된 게시판번호 찾기
$bc_idx = mysql_insert_id();

// 7. 파일저장
if($_FILES[bc_head_file][tmp_name] && $bc_head_file){
    if(file_exists($head_file)){
        @unlink($head_file);
    }
    move_uploaded_file($_FILES[bc_head_file][tmp_name], $head_file);
    chmod($head_file, 0666);

}
if($_FILES[bc_tail_file][tmp_name] && $bc_tail_file){
    if(file_exists($tail_file)){
        @unlink($tail_file);
    }
    move_uploaded_file($_FILES[bc_tail_file][tmp_name], $tail_file);
    chmod($tail_file, 0666);

}


// 8. 게시판목록 페이지로 보내기
alert("게시판이 생성 되었습니다.", "./admin_board_list.php");
?>
[admin_board_insert_save.php 소스]

input 태그의 type 이 file 인 경우에는 $_FILES[input 태그 name] 으로 파일들이 저장됩니다.
$_FILES[input 태그 name][name] : 파일이름
$_FILES[input 태그 name][tmp_name] : 임시저장된 파일
$_FILES[input 태그 name][type] : 파일종류
$_FILES[input 태그 name][size] : 파일사이즈
$_FILES[input 태그 name][error] : 에러

이것을 이용해 이미지 파일중에 jpg 인지 gif 인지도 검사합니다.

move_uploaded_file(업로드파일, 저장할파일) 은 저장할 파일로 업로드한 파일을 옮기는 함수입니다.

게시판 수정 페이지
<?
// 1. 공통 인클루드 파일
include "./admin_head.php";

// 2. 게시판 설정 데이터 불러오기
$sql = "select * from bd__board_config where bc_idx = '".$_GET[bc_idx]."'";
$data = sql_fetch($sql);
if(!$data[bc_idx]){
    alert("없는 게시판입니다.");
}
// 3. 입력 HTML 출력
?>
<br/>
<table style="width:1000px;height:30px;border:5px #CCCCCC solid;">
    <tr>
        <td align="center" valign="middle" style="font-zise:15px;font-weight:bold;">게시판 생성</td>
    </tr>
</table>
<br/>
<form name="bWriteForm" method="post" enctype="multipart/form-data" action="./admin_board_modify_save.php" style="margin:0px;">
<input type="hidden" name="bc_idx" value="<?=$data[bc_idx]?>">
<table style="width:1000px;height:30px;border:0px;">
    <tr>
        <td align="center" valign="middle" style="width:200px;height:30px;background-color:#CCCCCC;">게시판코드</td>
        <td align="left" valign="middle" style="width:800px;height:30px;"><input type="text" name="bc_code" style="width:780px;" value="<?=$data[bc_code]?>"></td>
    </tr>
    <tr>
        <td align="center" valign="middle" style="width:200px;height:30px;background-color:#CCCCCC;">게시판이름</td>
        <td align="left" valign="middle" style="width:800px;height:30px;"><input type="text" name="bc_name" style="width:780px;" value="<?=$data[bc_name]?>"></td>
    </tr>
    <tr>
        <td align="center" valign="middle" style="width:200px;height:30px;background-color:#CCCCCC;">게시판 상단이미지</td>
        <td align="left" valign="middle" style="width:800px;height:30px;"><?if($data[bc_head_file]){?><?=$data[bc_head_file]?>&nbsp;<input type="checkbox" name="bc_head_file_del" value="1"> 삭제<br><?}?><input type="file" name="bc_head_file" size="80"></td>
    </tr>
    <tr>
        <td align="center" valign="middle" style="width:200px;height:30px;background-color:#CCCCCC;">게시판상단내용</td>
        <td align="left" valign="middle" style="width:800px;height:100px;"><textarea name="bc_head" style="width:800px;height:100px;"><?=$data[bc_head]?></textarea></td>
    </tr>
    <tr>
        <td align="center" valign="middle" style="width:200px;height:30px;background-color:#CCCCCC;">게시판하단내용</td>
        <td align="left" valign="middle" style="width:800px;height:100px;"><textarea name="bc_tail" style="width:800px;height:100px;"><?=$data[bc_tail]?></textarea></td>
    </tr>
    <tr>
        <td align="center" valign="middle" style="width:200px;height:30px;background-color:#CCCCCC;">게시판하단이미지</td>
        <td align="left" valign="middle" style="width:800px;height:30px;"><?if($data[bc_tail_file]){?><?=$data[bc_tail_file]?>&nbsp;<input type="checkbox" name="bc_tail_file_del" value="1"> 삭제<br><?}?><input type="file" name="bc_tail_file" size="80"></td>
    </tr>
    <tr>
        <td align="center" valign="middle" style="width:200px;height:120px;background-color:#CCCCCC;">권한설정</td>
        <td align="left" valign="middle" style="width:800px;height:120px;">
        목록 레벨 : <select name="bc_list_level">
        <?for($i=0;$i<=9;$i++){?>
            <option value="<?=$i?>" <?if($data[bc_list_level] == $i){echo "selected";}?>><?=$i?></option>
        <?}?>
        </select><br>
        읽기 레벨 : <select name="bc_read_level">
        <?for($i=0;$i<=9;$i++){?>
            <option value="<?=$i?>" <?if($data[bc_read_level] == $i){echo "selected";}?>><?=$i?></option>
        <?}?>
        </select><br>
        쓰기 레벨 : <select name="bc_write_level">
        <?for($i=0;$i<=9;$i++){?>
            <option value="<?=$i?>" <?if($data[bc_write_level] == $i){echo "selected";}?>><?=$i?></option>
        <?}?>
        </select><br>
        답글 레벨 : <select name="bc_reply_level">
        <?for($i=0;$i<=9;$i++){?>
            <option value="<?=$i?>" <?if($data[bc_reply_level] == $i){echo "selected";}?>><?=$i?></option>
        <?}?>
        </select><br>
        댓글 레벨 : <select name="bc_comment_level">
        <?for($i=0;$i<=9;$i++){?>
            <option value="<?=$i?>" <?if($data[bc_comment_level] == $i){echo "selected";}?>><?=$i?></option>
        <?}?>
        </select>
        </td>
    </tr>
    <tr>
        <td align="center" valign="middle" style="width:200px;height:30px;background-color:#CCCCCC;">게시판 관리자ID</td>
        <td align="left" valign="middle" style="width:800px;height:30px;"><input type="text" name="bc_admin" style="width:780px;" value="<?=$data[bc_admin]?>"></td>
    </tr>
    <tr>
        <td align="center" valign="middle" style="width:200px;height:30px;background-color:#CCCCCC;">파일 업로드 사용</td>
        <td align="left" valign="middle" style="width:800px;height:30px;"><input type="checkbox" name="bc_use_file" value="1" <?if($data[bc_use_file] == 1){echo "checked";}?>> 사용</td>
    </tr>
    <tr>
        <td align="center" valign="middle" style="width:200px;height:30px;background-color:#CCCCCC;">비밀글 사용</td>
        <td align="left" valign="middle" style="width:800px;height:30px;"><input type="checkbox" name="bc_use_secret" value="1" <?if($data[bc_use_secret] == 1){echo "checked";}?>> 사용</td>
    </tr>
    <tr>
        <td align="center" valign="middle" style="width:200px;height:30px;background-color:#CCCCCC;">답글 사용</td>
        <td align="left" valign="middle" style="width:800px;height:30px;"><input type="checkbox" name="bc_use_reply" value="1" <?if($data[bc_use_reply] == 1){echo "checked";}?>> 사용</td>
    </tr>
    <tr>
        <td align="center" valign="middle" style="width:200px;height:30px;background-color:#CCCCCC;">댓글 사용</td>
        <td align="left" valign="middle" style="width:800px;height:30px;"><input type="checkbox" name="bc_use_comment" value="1" <?if($data[bc_use_comment] == 1){echo "checked";}?>> 사용</td>
    </tr>
    <!-- 4. 수정 버튼 클릭시 입력필드 검사 함수 write_save 실행 -->
    <tr>
        <td align="center" valign="middle" colspan="2"><input type="button" value=" 게시판수정 " onClick="write_save();">&nbsp;&nbsp;&nbsp;<input type="button" value=" 삭제 " onClick="location.replace('./admin_board_delete.php?bc_idx=<?=$data[bc_idx]?>')">&nbsp;&nbsp;&nbsp;<input type="button" value=" 뒤로가기 " onClick="history.back();"></td>
    </tr>
</table>
</form>
<script>
// 5.입력필드 검사함수
function write_save()
{
    // 6.form 을 f 에 지정
    var f = document.bWriteForm;

    // 7.입력폼 검사

    if(f.bc_code.value == ""){
        alert("게시판코드를 입력해 주세요.");
        return false;
    }

    if(f.bc_name.value == ""){
        alert("게시판이름을 입력해 주세요.");
        return false;
    }

    // 8.검사가 성공이면 form 을 submit 한다
    f.submit();

}
</script>
[admin_board_modify.php 소스]

게시판 수정 저장페이지
<?
// 1. 공통 인클루드 파일
include "./admin_head.php";

// 2. 게시판 존재여부 검사
$sql = "select * from bd__board_config where bc_idx = '".$_POST[bc_idx]."'";
$data = sql_fetch($sql);
if(!$data[bc_idx]){
    alert("없는 게시판입니다.");
}

// 3. 넘어온 변수 검사
if(trim($_POST[bc_code]) == ""){
    alert("게시판코드를 입력해 주세요.");
}

$sql = "select * from bd__board_config where bc_code = '".trim($_POST[bc_code])."' and bc_idx != '".$_POST[bc_idx]."'";
$data1 = sql_fetch($sql);
if($data1[bc_idx]){
    alert("이미 존재하는 게시판입니다.");
}

if(trim($_POST[bc_name]) == ""){
    alert("게시판이름을 입력해 주세요.");
}

$bc_idx = $_POST[bc_idx];

$dir = "./data/board_config";
$head_file = $dir."/".$bc_idx."_head";
$tail_file = $dir."/".$bc_idx."_tail";

$bc_head_file = $data[bc_head_file];
$bc_tail_file = $data[bc_tail_file];

// 4. 파일 삭제 체크시 삭제
if($_POST[bc_head_file_del]){
    @unlink($head_file);
    $bc_head_file = "";
}
if($_POST[bc_tail_file_del]){
    @unlink($tail_file);
    $bc_tail_file = "";
}

// 5. 파일이 jpg나 gif 인지 검사
if($_FILES[bc_head_file][tmp_name]){
    if($_FILES[bc_head_file][type] == "image/gif" || $_FILES[bc_head_file][type] == "image/jpeg"){
        $bc_head_file = $_FILES[bc_head_file][name];
    }else{
        $bc_head_file = "";
    }
}
if($_FILES[bc_tail_file][tmp_name]){
    if($_FILES[bc_tail_file][type] == "image/gif" || $_FILES[bc_tail_file][type] == "image/jpeg"){
        $bc_tail_file = $_FILES[bc_tail_file][name];
    }else{
        $bc_tail_file = "";
    }
}


// 7. 게시판 저장
$sql = "update bd__board_config set
        bc_code = '".trim($_POST[bc_code])."',
        bc_name = '".trim($_POST[bc_name])."',
        bc_head_file = '".$bc_head_file."',
        bc_head = '".$_POST[b_title]."',
        bc_tail_file = '".$bc_tail_file."',
        bc_tail = '".$_POST[bc_tail]."',
        bc_list_level = '".$_POST[bc_list_level]."',
        bc_read_level = '".$_POST[bc_read_level]."',
        bc_write_level = '".$_POST[bc_write_level]."',
        bc_reply_level = '".$_POST[bc_reply_level]."',
        bc_comment_level = '".$_POST[bc_comment_level]."',
        bc_admin = '".$_POST[bc_admin]."',
        bc_use_file = '".$_POST[bc_use_file]."',
        bc_use_secret = '".$_POST[bc_use_secret]."',
        bc_use_reply = '".$_POST[bc_use_reply]."',
        bc_use_comment = '".$_POST[bc_use_comment]."'
        where bc_idx = '".$bc_idx."'
        ";
sql_query($sql);


// 7. 파일저장
if($_FILES[bc_head_file][tmp_name] && $bc_head_file){
    if(file_exists($head_file)){
        @unlink($head_file);
    }
    move_uploaded_file($_FILES[bc_head_file][tmp_name], $head_file);
    chmod($head_file, 0666);

}
if($_FILES[bc_tail_file][tmp_name] && $bc_tail_file){
    if(file_exists($tail_file)){
        @unlink($tail_file);
    }
    move_uploaded_file($_FILES[bc_tail_file][tmp_name], $tail_file);
    chmod($tail_file, 0666);

}


// 8. 코드가 바귀었으면 게시판 글의 코드 수정
if($data[bc_code] != trim($_POST[bc_code])){
    $sql = "update bd__board set bc_code ='".trim($_POST[bc_code])."' where bc_code = '".$data[bc_code]."'";
    sql_query($sql);
}

// 9. 게시판목록 페이지로 보내기
alert("게시판이 수정 되었습니다.", "./admin_board_list.php");
?>
[admin_board_modify_save.php 소스]

8번에서 게시판 코드가 바뀌었으면 글들의 게시판 코드도 바꿔주는 부분입니다.

게시판 삭제 페이지
<?
// 1. 공통 인클루드 파일
include "./admin_head.php";

// 2. 게시판 존재여부 검사
$sql = "select * from bd__board_config where bc_idx = '".$_GET[bc_idx]."'";
$data = sql_fetch($sql);
if(!$data[bc_idx]){
    alert("없는 게시판입니다.");
}

$bc_idx = $_GET[bc_idx];

$dir = "./data/board_config";
$head_file = $dir."/".$bc_idx."_head";
$tail_file = $dir."/".$bc_idx."_tail";

// 3. 파일 삭제
@unlink($head_file);
@unlink($tail_file);

// 4. 게시판 삭제
$sql = "delete from bd__board_config where bc_idx = '".$bc_idx."'";
sql_query($sql);

// 5. 코멘트 및 파일 삭제를 위한 게시글 목록 구하기
$sql = "select * from bd__board where bc_code = '".$data[bc_code]."'";
$data1 = sql_list($sql);

// 6. 게시글 삭제
$sql = "delete from bd__board where bc_code = '".$data[bc_code]."'";
sql_query($sql);

// 7. 코멘트 및 게시물 파일 삭제
for($i=0;$i<count($data1);$i++){
    $sql = "delete from bd__comment where b_idx = '".$data1[b_idx]."'";
    sql_query($sql);

    $b_file = "./data/".$data1[b_idx];
    @unlink($b_file);
}

// 8. 게시판목록 페이지로 보내기
alert("게시판이 삭제 되었습니다.", "./admin_board_list.php");
?>
[admin_board_delete.php 소스]

6번은 게시물들을 삭제하는것입니다.
7번은 6번 게시물들에 달린 댓글들을 삭제하고 또 글들의 파일들을 삭제 하는 내용입니다.

다음시간에는 어드민페이지에서 회원들을 관리하는 부분을 배워보도록 하겠습니다.

지적해 주신 admin_index.php 파일입니다.
<?
include "./admin_head.php";
?>
[admin_index.php 소스]
저작자 표시 비영리 변경 금지
Posted by 슬픈기쁨

댓글을 달아주세요

  1. php
    2010/11/03 22:52
    댓글 주소 수정/삭제 댓글
    insert into bd__board_config set bc_code = '3', bc_name = '자유', bc_head_file = '', bc_head = '', bc_tail_file = '', bc_tail = 'ㅇㅇㅇㅇ', bc_list_level = '0', bc_read_level = '0', bc_write_level = '0', bc_reply_level = '0', bc_comment_level = '0, bc_admin = '', bc_use_file = '', bc_use_secret = '', bc_use_reply = '', bc_use_comment = ''

    1064 : 'SQL 구문에 오류가 있습니다.' 에러 같읍니다. (''0, bc_admin = '', bc_use_file = '', bc_use_secret' 명령어 라인 12)

    error file : /i_board/admin_board_insert_save.php
  2. heeya
    2010/12/10 12:41
    댓글 주소 수정/삭제 댓글
    안녕하세요. 좋은 강의 덕분에 php 를 즐겁게 공부하고 있어요.
    정말 감사합니다.. ^ -^
    한가지 궁금한점은, 게시판을 수정하고 나면, 올렸던 이미지 파일들이 delete 체크를 안눌러도 없어지는데, 왜 그런걸까요?
    아무리 봐도 어떤부분을 바꿔야 할지 모르겠어요^ ^;;

<< PREV : [1] : ... [45] : [46] : [47] : [48] : [49] : [50] : [51] : [52] : [53] : ... [120] : NEXT >>

BLOG main image
PHPer를 위한 Tip , 휴식, 그리고........ by 슬픈기쁨

카테고리

분류 전체보기 (120)
PHP Tip (9)
PHP 강좌 (58)
Project 이야기 (5)
My Story (15)
꼬리 & 달이 이야기 (19)
의뢰하기 (1)
흥얼흥얼 (12)
Total : 160,043
Today : 25 Yesterday : 227