1번파일을 삭제 할 수 없게해주는 방법이 있을까요? 정보
1번파일을 삭제 할 수 없게해주는 방법이 있을까요?본문
write.skin.php 입니다.
글 최초작성시 1번파일 반드시 첨부하도록 했으나,
글 수정에서 1번파일의 삭제를 막지 못하고 있습니다.
즉, 업로드된 1번파일을 교체는 가능하되 삭제 할 수 없게해주는 방법이 있을까요?
반드시 구현해야할 중요한 부분인데 하수의 머리로는 감이 잡히지 않습니다.
한줄의 힌트라도 고맙겠습니다.
function fwrite_check(f)
{
중략~~*
//이미지 파일만 업로드되도록 체크
//http://www.sir.co.kr/bbs/tb.php/g4_qa/19571 사랑@마눌님 팁
//알려진 문제, 글 수정시 1번파일의 삭제를 막지못함
<?php $file_ext = "jpg|jpeg|gif|png"; ?>
var file_ext = "\\.(<?=$file_ext?>)$";
var tmp_file = document.getElementsByName("bf_file[]");
<?php if ($w != "u") { ?>
if (tmp_file[0].value == '') {
alert("첫번째 파일이 없습니다.\n확장자 (<?=$file_ext?>)인 파일만 업로드 가능합니다.");
tmp_file[0].focus();
return;
}
<?php } ?>
for (i = 0; i < tmp_file.length; i++) {
if (tmp_file[i].value != '') {
if (!((new RegExp(file_ext, "i")).test(tmp_file[i].value))) {
alert("확장자 (<?=$file_ext?>)인 파일만 업로드 가능합니다.");
tmp_file[i].focus();
return;
}
}
}
//######## test line start ########
<?
/* 참고사항 http://www.sir.co.kr/bbs/tb.php/g4_qa/1379 김석수님
if ($file_length<5)
for ($i=$file_length+1; $i<5; $i++)
$file_script .= "add_file('');\n";
*/
?>
<?php
//수정에서
if ($w == "u") {
/*
for ($i=0; $i<$file[count]; $i++) {
*/
//$file[count]를 이용해서 삭제를 막을 수 있나? ,,, 없나??
$file_check = $file[count] ;
if (($file_check) >= 1) { ?>
//alert("check1");
//return;
<? } if (($file_check) <= 0) {/*요렇게 할경우 수정에서 1번파일 체크가능하나, 재수정에서 삭제시 대책없음*/ ?>
//alert("check2");
if (tmp_file[0].value == '') {
alert("첫번째 파일이 없습니다. check2\n확장자 (<?=$file_ext?>)인 파일만 업로드 가능합니다.");
tmp_file[0].focus();
return;
}
<? }
// }//for
//alert("check3");
}//if
?>
//######## test line end ########
//이미지 파일만 업로드되도록 체크 끝
글 최초작성시 1번파일 반드시 첨부하도록 했으나,
글 수정에서 1번파일의 삭제를 막지 못하고 있습니다.
즉, 업로드된 1번파일을 교체는 가능하되 삭제 할 수 없게해주는 방법이 있을까요?
반드시 구현해야할 중요한 부분인데 하수의 머리로는 감이 잡히지 않습니다.
한줄의 힌트라도 고맙겠습니다.
function fwrite_check(f)
{
중략~~*
//이미지 파일만 업로드되도록 체크
//http://www.sir.co.kr/bbs/tb.php/g4_qa/19571 사랑@마눌님 팁
//알려진 문제, 글 수정시 1번파일의 삭제를 막지못함
<?php $file_ext = "jpg|jpeg|gif|png"; ?>
var file_ext = "\\.(<?=$file_ext?>)$";
var tmp_file = document.getElementsByName("bf_file[]");
<?php if ($w != "u") { ?>
if (tmp_file[0].value == '') {
alert("첫번째 파일이 없습니다.\n확장자 (<?=$file_ext?>)인 파일만 업로드 가능합니다.");
tmp_file[0].focus();
return;
}
<?php } ?>
for (i = 0; i < tmp_file.length; i++) {
if (tmp_file[i].value != '') {
if (!((new RegExp(file_ext, "i")).test(tmp_file[i].value))) {
alert("확장자 (<?=$file_ext?>)인 파일만 업로드 가능합니다.");
tmp_file[i].focus();
return;
}
}
}
//######## test line start ########
<?
/* 참고사항 http://www.sir.co.kr/bbs/tb.php/g4_qa/1379 김석수님
if ($file_length<5)
for ($i=$file_length+1; $i<5; $i++)
$file_script .= "add_file('');\n";
*/
?>
<?php
//수정에서
if ($w == "u") {
/*
for ($i=0; $i<$file[count]; $i++) {
*/
//$file[count]를 이용해서 삭제를 막을 수 있나? ,,, 없나??
$file_check = $file[count] ;
if (($file_check) >= 1) { ?>
//alert("check1");
//return;
<? } if (($file_check) <= 0) {/*요렇게 할경우 수정에서 1번파일 체크가능하나, 재수정에서 삭제시 대책없음*/ ?>
//alert("check2");
if (tmp_file[0].value == '') {
alert("첫번째 파일이 없습니다. check2\n확장자 (<?=$file_ext?>)인 파일만 업로드 가능합니다.");
tmp_file[0].focus();
return;
}
<? }
// }//for
//alert("check3");
}//if
?>
//######## test line end ########
//이미지 파일만 업로드되도록 체크 끝
댓글 전체

해 보진 않았습니다만,
for (i = 0; i < tmp_file.length; i++) {
에서
for (i = 1; i < tmp_file.length; i++) {
하면 되지 않을까 합니다.
for (i = 0; i < tmp_file.length; i++) {
에서
for (i = 1; i < tmp_file.length; i++) {
하면 되지 않을까 합니다.
코멘트 고맙습니다.
제가 잘못 적용했는지 잘 안되는군요!!^^
글 수정시 이미 업로드된 1번파일이 있다는 전제하에,,
내용만 수정하는 경우에 tmp_file[0] 체크 루틴을 막아주면 됩니다.
그런데,
이때 이미 업로드된 1번파일의 삭제를 체크하고 등록할 경우 삭제가 이루어 지는 문제를 해결하고자 하는것입니다.
+++++++++++++++++++++++++++++++++++++++++++++++
-, 수정시 > 1번파일 검사 > 있다면 통과
" " > 없다면 리턴
" " > 1번파일 삭제에 체크할 경우 무조건 리턴
+++++++++++++++++++++++++++++++++++++++++++++++
단순하것 같은데,,
돌아가실 지경입니다.ㅎㅎ
제가 잘못 적용했는지 잘 안되는군요!!^^
글 수정시 이미 업로드된 1번파일이 있다는 전제하에,,
내용만 수정하는 경우에 tmp_file[0] 체크 루틴을 막아주면 됩니다.
그런데,
이때 이미 업로드된 1번파일의 삭제를 체크하고 등록할 경우 삭제가 이루어 지는 문제를 해결하고자 하는것입니다.
+++++++++++++++++++++++++++++++++++++++++++++++
-, 수정시 > 1번파일 검사 > 있다면 통과
" " > 없다면 리턴
" " > 1번파일 삭제에 체크할 경우 무조건 리턴
+++++++++++++++++++++++++++++++++++++++++++++++
단순하것 같은데,,
돌아가실 지경입니다.ㅎㅎ

새글이 아닌, 수정 글이고
수정 글이 1번에 업로드가 되어있다는 전재하에
write.php 의 하단에
add_file('<input type=\'checkbox\' name=\'bf_file_del[$i]\'
부분을
add_file('<input type=\'checkbox\' ".($i==0?'disabled':'')." name=\'bf_file_del[$i]\'
하시면 삭제는 되지않고 파일 수정만 되겠군요.
수정 글이 1번에 업로드가 되어있다는 전재하에
write.php 의 하단에
add_file('<input type=\'checkbox\' name=\'bf_file_del[$i]\'
부분을
add_file('<input type=\'checkbox\' ".($i==0?'disabled':'')." name=\'bf_file_del[$i]\'
하시면 삭제는 되지않고 파일 수정만 되겠군요.
고맙습니다.
편히 쉬시는 휴일에 번거롭게 해드려 죄송 합니다.
일단, 해당 그룹만 적용하는 것으로 구현해보았습니다.
//1번파일 삭제방지를 위한 추가 - zzzz님 http://www.sir.co.kr/bbs/tb.php/g4_qa/20118
if ($gr_id == "gallery"){//그룹명시, gallery
$file_script .= "add_file(\"<input type='checkbox' ".($i==0?'disabled':'')." name='bf_file_del[$i]' value='1'><a href='{$file[$i][href]}'>{$file[$i][source]}({$file[$i][size]})</a> 파일 삭제";
}
else{
$file_script .= "add_file(\"<input type='checkbox' name='bf_file_del[$i]' value='1'><a href='{$file[$i][href]}'>{$file[$i][source]}({$file[$i][size]})</a> 파일 삭제";
}
//1번파일 삭제방지를 위한 추가 끝
거듭 감사의 말씀 올립니다.
편히 쉬시는 휴일에 번거롭게 해드려 죄송 합니다.
일단, 해당 그룹만 적용하는 것으로 구현해보았습니다.
//1번파일 삭제방지를 위한 추가 - zzzz님 http://www.sir.co.kr/bbs/tb.php/g4_qa/20118
if ($gr_id == "gallery"){//그룹명시, gallery
$file_script .= "add_file(\"<input type='checkbox' ".($i==0?'disabled':'')." name='bf_file_del[$i]' value='1'><a href='{$file[$i][href]}'>{$file[$i][source]}({$file[$i][size]})</a> 파일 삭제";
}
else{
$file_script .= "add_file(\"<input type='checkbox' name='bf_file_del[$i]' value='1'><a href='{$file[$i][href]}'>{$file[$i][source]}({$file[$i][size]})</a> 파일 삭제";
}
//1번파일 삭제방지를 위한 추가 끝
거듭 감사의 말씀 올립니다.
교체가 가능하다는 것은 지울 수도 있다는 뜻 입니다.
filesize가 1인 것으로 바꾸면 되니까요.
더 골치 아프게 해드려서 죄송합니다. 쓩~
filesize가 1인 것으로 바꾸면 되니까요.
더 골치 아프게 해드려서 죄송합니다. 쓩~
감사합니다.
갤러리에서 썸네일 생성대상 파일이며, 각종 인덱스에 리스팅되는 기본이미지에 대한 고민때문에 질문드렸던 것입니다.
글 최초 작성 및 수정시 '확장자를 지정한 이미지파일'로 제한했지만,
1픽셀짜리 이미지를 등록한다면 염려하시는 문제가 발생 할 수 있겠습니다.
최소 이미지 크기를 제한하는 방법도 생각해볼 수 있을듯 합니다.
조언 감사드립니다.
갤러리에서 썸네일 생성대상 파일이며, 각종 인덱스에 리스팅되는 기본이미지에 대한 고민때문에 질문드렸던 것입니다.
글 최초 작성 및 수정시 '확장자를 지정한 이미지파일'로 제한했지만,
1픽셀짜리 이미지를 등록한다면 염려하시는 문제가 발생 할 수 있겠습니다.
최소 이미지 크기를 제한하는 방법도 생각해볼 수 있을듯 합니다.
조언 감사드립니다.
사용자의 악용을 막으려는 것인지
실수를 보완하시려는 것인지 잘 모르겠지만
실수를 보완하는 쪽이라면
올릴 때 이미지를 미리 보기해 주면 어떨까 합니다.
악용을 막는 쪽이라면 자바스크립트만으로는 부족하고
upload하기 전에 getimagesize( http://kr.php.net/manual/kr/function.getimagesize.php )로
이미지 타입하고 크기를 제한 하시면 되겠습니다.
이런 이유로 전 wrte.php 코드 수행보다 write.skin.php가 먼저 수행되어야 한다고 생각합니다.
실수를 보완하시려는 것인지 잘 모르겠지만
실수를 보완하는 쪽이라면
올릴 때 이미지를 미리 보기해 주면 어떨까 합니다.
악용을 막는 쪽이라면 자바스크립트만으로는 부족하고
upload하기 전에 getimagesize( http://kr.php.net/manual/kr/function.getimagesize.php )로
이미지 타입하고 크기를 제한 하시면 되겠습니다.
이런 이유로 전 wrte.php 코드 수행보다 write.skin.php가 먼저 수행되어야 한다고 생각합니다.
두번재 캐이스가 맞습니다.
알려주신 방법을 연구해 보겠습니다.
초보가 하는일이라서 두서가 없습니다.
부딪치면 돌파하는,,,^^
조언 감사합니다.
알려주신 방법을 연구해 보겠습니다.
초보가 하는일이라서 두서가 없습니다.
부딪치면 돌파하는,,,^^
조언 감사합니다.
rolo님께서 지적해 주신 부분은 숙제로 남겨두고,,
write.php수정 부분을 제외한 wirte.skin.php에서 처리하는 부분을 정리해보았습니다.
도움주신 고수님들께 감사의 말씀 드립니다.
//################## 이미지 파일만 업로드되도록 체크 ##################
//http://www.sir.co.kr/bbs/tb.php/g4_qa/19571 사랑@마눌님 팁
//알려진 문제, 글 수정시 1번파일의 삭제를 막지못함
<? $file_ext = "jpg|jpeg|gif|png"; ?>
var file_ext = "\\.(<?=$file_ext?>)$";
var tmp_file = document.getElementsByName("bf_file[]");
//글 수정이 아니라면
<? if ($w != "u") { ?>
if (tmp_file[0].value == '') {
alert("첫번째 파일이 없습니다.\n확장자 (<?=$file_ext?>)인 파일만 업로드 가능합니다.");
tmp_file[0].focus();
return;
}
for (i = 0; i < tmp_file.length; i++) {
if (tmp_file[i].value != '') {
if (!((new RegExp(file_ext, "i")).test(tmp_file[i].value))) {
alert("확장자 (<?=$file_ext?>)인 파일만 업로드 가능합니다.");
tmp_file[i].focus();
return;
}
}
}
<?
}
?>
//글 수정이라면, write.php에서 1번파일에 대한 삭제방지를 위해 체크박스 딤드 - zzzz님
//### 원본수정 ### http://www.sir.co.kr/bbs/tb.php/g4_qa/20118 write.php에서 처리 ".($i==0?'disabled':'')."
//대체파일 업로드할때 지정된 이미지 파일만 업로드되도록 체크
<? if ($w = "u") { ?>
for (i = 0; i < tmp_file.length; i++) {
if (tmp_file[i].value != '') {
if (!((new RegExp(file_ext, "i")).test(tmp_file[i].value))) {
alert("확장자 (<?=$file_ext?>)인 파일만 업로드 가능합니다.");
tmp_file[i].focus();
return;
}
}
}
<?
}
?>
//step2
//운영중에 스킨을 변경하는 등, 만일의 경우를 대비해 1번파일이 없는 경우라면 지정파일인지 체크
<?
if ($w == "u") {
$file_check = $file[count] ;
if (($file_check) <= 0) { ?>
if (tmp_file[0].value == '') {
alert("첫번째 파일이 없습니다.\n확장자 (<?=$file_ext?>)인 파일만 업로드 가능합니다.");
tmp_file[0].focus();
return;
}
<?
}
}//if
?>
//################## 이미지 파일만 업로드되도록 체크 끝 ##################
write.php수정 부분을 제외한 wirte.skin.php에서 처리하는 부분을 정리해보았습니다.
도움주신 고수님들께 감사의 말씀 드립니다.
//################## 이미지 파일만 업로드되도록 체크 ##################
//http://www.sir.co.kr/bbs/tb.php/g4_qa/19571 사랑@마눌님 팁
//알려진 문제, 글 수정시 1번파일의 삭제를 막지못함
<? $file_ext = "jpg|jpeg|gif|png"; ?>
var file_ext = "\\.(<?=$file_ext?>)$";
var tmp_file = document.getElementsByName("bf_file[]");
//글 수정이 아니라면
<? if ($w != "u") { ?>
if (tmp_file[0].value == '') {
alert("첫번째 파일이 없습니다.\n확장자 (<?=$file_ext?>)인 파일만 업로드 가능합니다.");
tmp_file[0].focus();
return;
}
for (i = 0; i < tmp_file.length; i++) {
if (tmp_file[i].value != '') {
if (!((new RegExp(file_ext, "i")).test(tmp_file[i].value))) {
alert("확장자 (<?=$file_ext?>)인 파일만 업로드 가능합니다.");
tmp_file[i].focus();
return;
}
}
}
<?
}
?>
//글 수정이라면, write.php에서 1번파일에 대한 삭제방지를 위해 체크박스 딤드 - zzzz님
//### 원본수정 ### http://www.sir.co.kr/bbs/tb.php/g4_qa/20118 write.php에서 처리 ".($i==0?'disabled':'')."
//대체파일 업로드할때 지정된 이미지 파일만 업로드되도록 체크
<? if ($w = "u") { ?>
for (i = 0; i < tmp_file.length; i++) {
if (tmp_file[i].value != '') {
if (!((new RegExp(file_ext, "i")).test(tmp_file[i].value))) {
alert("확장자 (<?=$file_ext?>)인 파일만 업로드 가능합니다.");
tmp_file[i].focus();
return;
}
}
}
<?
}
?>
//step2
//운영중에 스킨을 변경하는 등, 만일의 경우를 대비해 1번파일이 없는 경우라면 지정파일인지 체크
<?
if ($w == "u") {
$file_check = $file[count] ;
if (($file_check) <= 0) { ?>
if (tmp_file[0].value == '') {
alert("첫번째 파일이 없습니다.\n확장자 (<?=$file_ext?>)인 파일만 업로드 가능합니다.");
tmp_file[0].focus();
return;
}
<?
}
}//if
?>
//################## 이미지 파일만 업로드되도록 체크 끝 ##################
>> write.php수정 부분을 제외한 wirte.skin.php에서 처리하는 부분을 정리해보았습니다.
이 경우
write.php에서 이미 글쓰기 처리( 이미지 업로드)까지 끝난 상황이므로
write.skin.php에서 이를 delete하는 것으로 해야 하지 않나요?
이 경우
write.php에서 이미 글쓰기 처리( 이미지 업로드)까지 끝난 상황이므로
write.skin.php에서 이를 delete하는 것으로 해야 하지 않나요?
아~!
어렵습니다.
현재상태는 zzzz님께서 알려주신 방법으로 write.php에서 이미 업로드된 1번파일을 삭제하지 못하게 강제하는 부분과, 위 write.skin.php에서 추가로 처리할 부분을 적용해둔 상태입니다.
>>delete 라면 1번파일 교체시 '기존파일에 대한 삭제처리를 write.skin.php에서 해주어야 한다' 는 말씀인지요?
위 코멘트에서 알려주신 링크를 참조해서 추가 작업을 해야할것 같습니다.
근본적이고 합리적인 대책을 찾는데는 매우 많은 시간이 걸리듯 합니다.
여러모로 도와주셔서 고맙습니다.
어렵습니다.
현재상태는 zzzz님께서 알려주신 방법으로 write.php에서 이미 업로드된 1번파일을 삭제하지 못하게 강제하는 부분과, 위 write.skin.php에서 추가로 처리할 부분을 적용해둔 상태입니다.
>>delete 라면 1번파일 교체시 '기존파일에 대한 삭제처리를 write.skin.php에서 해주어야 한다' 는 말씀인지요?
위 코멘트에서 알려주신 링크를 참조해서 추가 작업을 해야할것 같습니다.
근본적이고 합리적인 대책을 찾는데는 매우 많은 시간이 걸리듯 합니다.
여러모로 도와주셔서 고맙습니다.
힘네여