이번시간에는 설치때 만든 어드민 아이디로 로그인해서 게시판을 생성하고 또 그 게시판의 설정을 변경하는 부분을 만들어 보겠습니다.
우선 로그인 페이지 입니다.
로그인 체크 페이지
다음은 로그인한 후의 공통 head 부분입니다.
로그아웃 페이지입니다.
이제 로그인은 다 되었습니다.
이제 게시판 목록을 출력하고 각 게시판의 생성 및 설정을 변경하는 부분을 만들어 보겠습니다.
게시판 목록
게시판 생성 페이지
여기서 전에 없었던 부분은 form 태그의 enctype="multipart/form-data" 부분입니다.
이것은 파일을 업로드 하기위해서 필요한 부분입니다.
게시판 생성 저장 페이지
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(업로드파일, 저장할파일) 은 저장할 파일로 업로드한 파일을 옮기는 함수입니다.
게시판 수정 페이지
게시판 수정 저장페이지
8번에서 게시판 코드가 바뀌었으면 글들의 게시판 코드도 바꿔주는 부분입니다.
게시판 삭제 페이지
6번은 게시물들을 삭제하는것입니다.
7번은 6번 게시물들에 달린 댓글들을 삭제하고 또 글들의 파일들을 삭제 하는 내용입니다.
다음시간에는 어드민페이지에서 회원들을 관리하는 부분을 배워보도록 하겠습니다.
지적해 주신 admin_index.php 파일입니다.
우선 로그인 페이지 입니다.
<?
// 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. 로그인 입력 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>
로그인 체크 페이지
<?
// 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 소스]// 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("존재하지 않는 회원입니다.");
}
?>
다음은 로그인한 후의 공통 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 소스]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>
로그아웃 페이지입니다.
<?
// 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. 모든 세션값을 빈값으로
$_SESSION[user_idx] = "";
$_SESSION[user_id] = "";
$_SESSION[user_name] = "";
$_SESSION[user_level] = "";
alert("로그아웃이 되었습니다.", "./admin_login.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. 페이지 변수 설정
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>
게시판 생성 페이지
<?
// 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();"> <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 소스]// 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();"> <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>
여기서 전에 없었던 부분은 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 소스]// 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");
?>
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]?> <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]?> <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();"> <input type="button" value=" 삭제 " onClick="location.replace('./admin_board_delete.php?bc_idx=<?=$data[bc_idx]?>')"> <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 = '".$_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]?> <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]?> <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();"> <input type="button" value=" 삭제 " onClick="location.replace('./admin_board_delete.php?bc_idx=<?=$data[bc_idx]?>')"> <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>
게시판 수정 저장페이지
<?
// 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 소스]// 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");
?>
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 소스]// 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");
?>
6번은 게시물들을 삭제하는것입니다.
7번은 6번 게시물들에 달린 댓글들을 삭제하고 또 글들의 파일들을 삭제 하는 내용입니다.
다음시간에는 어드민페이지에서 회원들을 관리하는 부분을 배워보도록 하겠습니다.
지적해 주신 admin_index.php 파일입니다.
<?
include "./admin_head.php";
?>
[admin_index.php 소스]include "./admin_head.php";
?>
'PHP 강좌' 카테고리의 다른 글
| [PHP 강좌] 43.설치형 게시판 만들기 6 - 사용자 공통파일, 회원가입 (5) | 2009/12/22 |
|---|---|
| [PHP 강좌] 42. 설치형 게시판 만들기 5 - 회원관리 (1) | 2009/12/17 |
| [PHP 강좌] 41. 설치형게시판 만들기 4 - 어드민페이지 (어드민 로그인 및 게시판 생성/설정 변경) (2) | 2009/12/10 |
| [PHP 강좌] 40. 설치형 게시판 만들기 3 - 라이브러리 파일 만들기 (6) | 2009/12/08 |
| [PHP 강좌] 39. 설치형 게시판 만들기 2 - 디렉토리 구조 및 설치만들기 (22) | 2009/12/01 |
| [PHP 강좌] 38. 설치형 게시판 만들기 1 - 설계 및 기획 (6) | 2009/11/26 |

