PHP 첨부파일 글쓰기, 글수정, 글삭제
페이지 정보
본문
첨부파일을 업로드하면 등록할때 파일명을 변경해서 저장합니다.
예를 들면 1510039241D.zip 이렇게
1. 작성 write.php
<form name="hwrite" action="proc.php" method="post" enctype="multipart/form-data" style="padding:0px;">
<input type="hidden" name="idx" value="<?php echo $idx; ?>" />
<input type="hidden" name="del" value="<?php echo $del; ?>" />
<input type="hidden" name="wmode" value="<?php echo $wmode; ?>" />
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>파일</td>
<td>
<?php if ($file_name) { ?><img src="/data_device/<?php echo $file_name; ?>" width="130" border="0" bordet="0"><br />
<input type="checkbox" name="chk_delete" value="y" />파일삭제시 클릭<br />
<?php } ?>
<input type="file" name="uploadedfile" value="" />
</td>
</tr>
</table>
<div style="text-align:right; padding:15px 15px 0 0;">
<?php if ($wmode == "u") { ?><input type="image" src="img/btn_modify.gif" />
<?php } else { ?><input type="image" src="img/btn_write_ok.gif" />
<?php } ?>
<a href="list.php"><img src="img/btn_list.gif" border="0" /></a>
</div>
</form>
2. 저장 proc.php
<?php
include "_common.php";
include_once "../dbconfig.php";
echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />";
/*if ($member['mb_level'] < 9 ) {
echo "<script type='text/javascript'>";
echo " alert('관리자만 이용가능합니다.');";
echo " history.back();";
echo "</script>";
}*/
$dbconn = mysql_connect("$mysql_host","$mysql_user","$mysql_password") or die("데이터베이스 연결에 실패하였습니다.");
mysql_select_db($mysql_db,$dbconn);
@mysql_query("set names utf8"); // 한글문제 생기면 주석 해제
$table_name = "테이블이름";
$tmstamp = date("U");
$wmode = $_POST['wmode'];
$idx = $_POST['idx'];
if ($wmode == "" || $idx == "") {
$wmode = $_GET['wmode'];
$idx = $_GET['idx'];
}
$del = $_POST['del'];
if ($del == "") { $del = "n"; }
//$file_name = $_FILES['uploadedfile'];
$chk_delete = $_POST['chk_delete'];
$max_file_size = 5024000;
$uploaddir = '../data/'; //서버에 저장될 디렉토리의 권한은 777로 해둔다.
$uptime = time(); // 서버에 업로드할 파일명
if ($wmode == "u") { // 수정 시작
// 파일명을 가져온다.
$sql_file = "select file_name from ". $table_name ." where idx = '".$idx."' ";
$result = sql_query($sql_file);
$row = sql_fetch_array($result);
$old_filename = $row['file_name'];
/***************************************************************************
/* 업로드할 파일이 있는지 먼저 체크 후 삭제할 파일이 체크되어 있는지 확인
/* 삭제체크가 되어 있거나 있어도 새로 첨부하는 경우, DB정보 업데이트 후 서버에서 삭제
/* chk_delete에 값이 들어있다면 체크가 된 것이다.
****************************************************************************/
//////////////////////파일 업로드 처리////////////////////////////
$filename = $_FILES['uploadedfile']['name'];
$filesize = $_FILES['uploadedfile']['size'];
$filetype = $_FILES['uploadedfile']['type'];
if($filename != "") {
// 기존 파일 삭제
if($old_filename != "") {
@unlink($uploaddir.$old_filename);
}
$chk_file = explode(".", $filename);
$extension = $chk_file[sizeof($chk_file)-1];
// 디비에 저장할 파일이름
$instfile = $uptime.chr(rand(65,90)).".".$extension;
$target_path = $uploaddir . $instfile;
//업로드 허용 파일,용량 구분
if(($extension == "gif" || $extension == "jpg" || $extension == "jpeg" || $extension == "png") && ($filesize < $max_file_size)) {
//echo "instfile = ". $instfile."<br>";
//echo "target_path = ". $target_path."<br>";
if ($_FILES['uploadedfile']['error'] > 0) {
$errmsg = "에러코드: " . $_FILES['uploadedfile']['error'];
} else {
if (file_exists($target_path)) {
$errmsg = $filename." 이 이미 존재합니다.";
} else {
move_uploaded_file($filename, $target_path);
@chmod($instfile,0606); // 파일에 권한 설정
$sql = "update ". $table_name ." set
file_name = '".$instfile."' ,
del = '".$del."'
where idx = '".$idx."'
";
}
}
} else {
$errmsg = "알 수 없는 파일입니다.";
}
}
//////////////////////파일 업로드 처리 끝///////////////////////////
else {
if($_POST['chk_delete'] == "y") {
@unlink($uploaddir.$old_filename);
}
$sql = "update ". $table_name ." set
file_name = '' ,
del = '".$del."'
where idx = '".$idx."'
";
}
} else if ($wmode == "d") {
$sql_file = "select file_name from ". $table_name ." where idx = '$idx' ";
$result = mysql_query($sql_file);
$row = mysql_fetch_array($result);
$old_filename = $row['file_name'];
if($old_filename != "") {
@unlink($uploaddir.$old_filename);
}
$sql = "delete from ". $table_name ." where idx = '". $idx ."' " ;
//echo $sql;
//exit;
} else { // 쓰기 시작
//////////////////////파일 업로드 처리////////////////////////////
$filename = $_FILES['uploadedfile']['name'];
$filesize = $_FILES['uploadedfile']['size'];
if($filename != "") {
// 중복되지 않는 파일로 만든다
$instfile = $uptime.chr(rand(65,90)).".".$extension;
$chk_file = explode(".", $filename);
$extension = $chk_file[sizeof($chk_file)-1];
/*
$filename_ori = $_FILES['uploadedfile']['name']; // 업로드된 원본이름
$filename_size = $_FILES['uploadedfile']['size']; // 저장될 파일사이즈
*/
$target_path = $uploaddir . $instfile;
//업로드 금지 파일,용량 구분
if(($extension == "gif" || $extension == "jpg" || $extension == "jpeg" || $extension == "png") && ($filesize < $max_file_size)) {
if ($_FILES['uploadedfile']['error'] > 0) {
$errmsg = "에러코드: " . $_FILES['uploadedfile']['error'];
} else {
if (file_exists($target_path)) {
$errmsg = $filename." 이 이미 존재합니다.";
} else {
move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path);
chmod($instfile,0606); // 파일에 권한 설정
$sql = "insert into ". $table_name ."
(idx, num, file_name, del) values
('', '".$tmstamp."', '".$instfile."', 'n')
";
}
}
} else {
$errmsg = "알 수 없는 파일입니다.";
exit;
}
}
//////////////////////파일 업로드 처리 끝///////////////////////////
else {
$sql = "insert into ". $table_name ."
(idx, file_name, del) values
('', '', 'n')
";
}
}
//echo "sql => $sql <br>";
//exit;
//에러 메시지 처리
if($errmsg == "") {
$result = sql_query($sql);
//mysql_query($sql);
//mysql_query($sql) or dbError(mysql_error());
echo mysql_error();
mysql_close($dbconn); // MySQL에 접속종료
if ($wmode == "u")
show_msg("글을 수정했습니다.", "view.php?idx={$idx}");
elseif ($wmode == "d")
show_msg("글을 삭제했습니다.", "list.php");
else
show_msg("글을 등록했습니다.", "list.php?num={$tmstamp}");
function show_msg($msg, $url) {
echo "<script language=\"JavaScript\">
alert(\"{$msg}\");
document.location.replace(\"{$url}\");
</script>";
}
?>
참고자료
http://zzaps.tistory.com/52
https://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=qna_function&wr_id=233041
예를 들면 1510039241D.zip 이렇게
1. 작성 write.php
<form name="hwrite" action="proc.php" method="post" enctype="multipart/form-data" style="padding:0px;">
<input type="hidden" name="idx" value="<?php echo $idx; ?>" />
<input type="hidden" name="del" value="<?php echo $del; ?>" />
<input type="hidden" name="wmode" value="<?php echo $wmode; ?>" />
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>파일</td>
<td>
<?php if ($file_name) { ?><img src="/data_device/<?php echo $file_name; ?>" width="130" border="0" bordet="0"><br />
<input type="checkbox" name="chk_delete" value="y" />파일삭제시 클릭<br />
<?php } ?>
<input type="file" name="uploadedfile" value="" />
</td>
</tr>
</table>
<div style="text-align:right; padding:15px 15px 0 0;">
<?php if ($wmode == "u") { ?><input type="image" src="img/btn_modify.gif" />
<?php } else { ?><input type="image" src="img/btn_write_ok.gif" />
<?php } ?>
<a href="list.php"><img src="img/btn_list.gif" border="0" /></a>
</div>
</form>
2. 저장 proc.php
<?php
include "_common.php";
include_once "../dbconfig.php";
echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />";
/*if ($member['mb_level'] < 9 ) {
echo "<script type='text/javascript'>";
echo " alert('관리자만 이용가능합니다.');";
echo " history.back();";
echo "</script>";
}*/
$dbconn = mysql_connect("$mysql_host","$mysql_user","$mysql_password") or die("데이터베이스 연결에 실패하였습니다.");
mysql_select_db($mysql_db,$dbconn);
@mysql_query("set names utf8"); // 한글문제 생기면 주석 해제
$table_name = "테이블이름";
$tmstamp = date("U");
$wmode = $_POST['wmode'];
$idx = $_POST['idx'];
if ($wmode == "" || $idx == "") {
$wmode = $_GET['wmode'];
$idx = $_GET['idx'];
}
$del = $_POST['del'];
if ($del == "") { $del = "n"; }
//$file_name = $_FILES['uploadedfile'];
$chk_delete = $_POST['chk_delete'];
$max_file_size = 5024000;
$uploaddir = '../data/'; //서버에 저장될 디렉토리의 권한은 777로 해둔다.
$uptime = time(); // 서버에 업로드할 파일명
if ($wmode == "u") { // 수정 시작
// 파일명을 가져온다.
$sql_file = "select file_name from ". $table_name ." where idx = '".$idx."' ";
$result = sql_query($sql_file);
$row = sql_fetch_array($result);
$old_filename = $row['file_name'];
/***************************************************************************
/* 업로드할 파일이 있는지 먼저 체크 후 삭제할 파일이 체크되어 있는지 확인
/* 삭제체크가 되어 있거나 있어도 새로 첨부하는 경우, DB정보 업데이트 후 서버에서 삭제
/* chk_delete에 값이 들어있다면 체크가 된 것이다.
****************************************************************************/
//////////////////////파일 업로드 처리////////////////////////////
$filename = $_FILES['uploadedfile']['name'];
$filesize = $_FILES['uploadedfile']['size'];
$filetype = $_FILES['uploadedfile']['type'];
if($filename != "") {
// 기존 파일 삭제
if($old_filename != "") {
@unlink($uploaddir.$old_filename);
}
$chk_file = explode(".", $filename);
$extension = $chk_file[sizeof($chk_file)-1];
// 디비에 저장할 파일이름
$instfile = $uptime.chr(rand(65,90)).".".$extension;
$target_path = $uploaddir . $instfile;
//업로드 허용 파일,용량 구분
if(($extension == "gif" || $extension == "jpg" || $extension == "jpeg" || $extension == "png") && ($filesize < $max_file_size)) {
//echo "instfile = ". $instfile."<br>";
//echo "target_path = ". $target_path."<br>";
if ($_FILES['uploadedfile']['error'] > 0) {
$errmsg = "에러코드: " . $_FILES['uploadedfile']['error'];
} else {
if (file_exists($target_path)) {
$errmsg = $filename." 이 이미 존재합니다.";
} else {
move_uploaded_file($filename, $target_path);
@chmod($instfile,0606); // 파일에 권한 설정
$sql = "update ". $table_name ." set
file_name = '".$instfile."' ,
del = '".$del."'
where idx = '".$idx."'
";
}
}
} else {
$errmsg = "알 수 없는 파일입니다.";
}
}
//////////////////////파일 업로드 처리 끝///////////////////////////
else {
if($_POST['chk_delete'] == "y") {
@unlink($uploaddir.$old_filename);
}
$sql = "update ". $table_name ." set
file_name = '' ,
del = '".$del."'
where idx = '".$idx."'
";
}
} else if ($wmode == "d") {
$sql_file = "select file_name from ". $table_name ." where idx = '$idx' ";
$result = mysql_query($sql_file);
$row = mysql_fetch_array($result);
$old_filename = $row['file_name'];
if($old_filename != "") {
@unlink($uploaddir.$old_filename);
}
$sql = "delete from ". $table_name ." where idx = '". $idx ."' " ;
//echo $sql;
//exit;
} else { // 쓰기 시작
//////////////////////파일 업로드 처리////////////////////////////
$filename = $_FILES['uploadedfile']['name'];
$filesize = $_FILES['uploadedfile']['size'];
if($filename != "") {
// 중복되지 않는 파일로 만든다
$instfile = $uptime.chr(rand(65,90)).".".$extension;
$chk_file = explode(".", $filename);
$extension = $chk_file[sizeof($chk_file)-1];
/*
$filename_ori = $_FILES['uploadedfile']['name']; // 업로드된 원본이름
$filename_size = $_FILES['uploadedfile']['size']; // 저장될 파일사이즈
*/
$target_path = $uploaddir . $instfile;
//업로드 금지 파일,용량 구분
if(($extension == "gif" || $extension == "jpg" || $extension == "jpeg" || $extension == "png") && ($filesize < $max_file_size)) {
if ($_FILES['uploadedfile']['error'] > 0) {
$errmsg = "에러코드: " . $_FILES['uploadedfile']['error'];
} else {
if (file_exists($target_path)) {
$errmsg = $filename." 이 이미 존재합니다.";
} else {
move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path);
chmod($instfile,0606); // 파일에 권한 설정
$sql = "insert into ". $table_name ."
(idx, num, file_name, del) values
('', '".$tmstamp."', '".$instfile."', 'n')
";
}
}
} else {
$errmsg = "알 수 없는 파일입니다.";
exit;
}
}
//////////////////////파일 업로드 처리 끝///////////////////////////
else {
$sql = "insert into ". $table_name ."
(idx, file_name, del) values
('', '', 'n')
";
}
}
//echo "sql => $sql <br>";
//exit;
//에러 메시지 처리
if($errmsg == "") {
$result = sql_query($sql);
//mysql_query($sql);
//mysql_query($sql) or dbError(mysql_error());
echo mysql_error();
mysql_close($dbconn); // MySQL에 접속종료
if ($wmode == "u")
show_msg("글을 수정했습니다.", "view.php?idx={$idx}");
elseif ($wmode == "d")
show_msg("글을 삭제했습니다.", "list.php");
else
show_msg("글을 등록했습니다.", "list.php?num={$tmstamp}");
function show_msg($msg, $url) {
echo "<script language=\"JavaScript\">
alert(\"{$msg}\");
document.location.replace(\"{$url}\");
</script>";
}
?>
참고자료
http://zzaps.tistory.com/52
https://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=qna_function&wr_id=233041
댓글목록
등록된 댓글이 없습니다.