··조회 14,285
write_ok 부분에 대한 질문입니다.
저기요 ㅠㅠ 흑흑흑... 딴게시판은 올려놓는거에대해서 잘되는데 혹 저는 잘안됩니다.
파일네임은 file_name 인데요 이 이름을 카피부분에 넣으면 data 폴더에 넣도록하는 함수명령어가 무엇입니까?
저는 이렇게 해도 안넣어집니다 으악@@@@@@!!
@system("cp data/$file_name"); 이것도 해보고 흐흑흑..
if(!copy($file_name,"data/$file_name")) 해도 서버에 저장되지않습니다.
도와주세요!!! 저의 write_ok.php 소스입니다.
테스트 환경주소는 http://yangws13.webzonei.net/b/list.php?db=free
입니다. T.T
↓↓↓
---------------------write.php-------------------
<br><br><br><br>
<table width="498" border="0" align=center cellpadding="0" cellspacing="0" height="402">
<form method=post action=write_ok.php>
<input type=hidden name=db value='<?=$db?>'>
<tr>
<td width="497" height="3" colspan="8"></td>
<td width="1" height="3"></td>
</tr>
<tr>
<td width="3" height="398" rowspan="7"></td>
<td width="47" height="27">
<p align="center"><span style="font-size:9pt;">제목</span></td>
<td width="2" height="58" rowspan="4"></td>
<td width="445" colspan="5" height="27"><input type=text name=title size=57></td>
<td width="1" height="27"></td>
</tr>
<tr>
<td width="47" height="2"></td>
<td width="445" height="2" colspan="5"></td>
<td width="1" height="2"></td>
</tr>
<td width="47" height="27">
<p align="center"><span style="font-size:9pt;">이름</span></td>
<td width="195" height="27"><input type=text name=name></td>
<td width="2" height="29" rowspan="2"></td>
<td width="47" height="27">
<p align="center"><span style="font-size:9pt;">비번</span></td>
<td width="2" height="29" rowspan="2"></td>
<td width="199" height="27"><input type=password name=password></td>
<td width="1" height="27"></td>
</tr>
<tr>
<td width="47" height="2"></td>
<td width="195" height="2"></td>
<td width="47" height="2"></td>
<td width="199" height="2"></td>
<td width="1" height="2"></td>
</tr>
<tr>
<td width="494" colspan="7" height="312">
<textarea name=memo cols=70 rows=20></textarea>
</td>
<td width="1" height="312"></td>
</tr>
<tr>
<td width="494" height="2" colspan="7"></td>
<td width="1" height="2"></td>
</tr>
<tr>
<td width="291" colspan="6" height="26">
<input type=submit value=" 글올리기 "><script language="javascript">
function check_submit() {
if (document.myForm.name.value == "") {
alert('이름을 입력하세요');
document.myForm.name.focus();
return;
} else if (document.myForm.password.value == "") {
alert('비밀번호를 입력해야 글을 수정하거나 삭제할 수 있습니다.');
document.myForm.password.focus();
return;
} else if (document.myForm.title.value == "") {
alert('제목을 입력하세요');
document.myForm.title.focus();
return;
} else if (document.myForm.memo.value == "") {
alert('내용을 입력하세요');
document.myForm.memo.focus();
return;
} else {
document.myForm.action = "write_ok.php";
document.myForm.submit();
}
}
</script>
</td>
<td width="205" height="26">
<input type=file name="file_name" size="15">
</td>
<td width="1" height="26"></td>
</tr>
<tr>
<td width="3" height="1"></td>
<td width="47" height="1"></td>
<td width="2" height="1"></td>
<td width="195" height="1"></td>
<td width="2" height="1"></td>
<td width="47" height="1"></td>
<td width="2" height="1"></td>
<td width="199" height="1"></td>
<td width="1" height="1"></td>
</tr>
</table>
------------write_ok.php-------------------
<p style="border-collapse:collapse;"align="center"><font color="red"><br>
<?
if(!$title){
echo "<script> window.alert('제목을 입력하세요'); history.go(-1) </script>";
exit;
}
if(!$name){
echo "<script> window.alert('이름을 입력하세요'); history.go(-1) </script>";
exit;
}
if(!$password){
echo "<script> window.alert('비번을 입력하세요'); history.go(-1) </script>";
exit;
}
if(!$memo){
echo "<script> window.alert('내용을 입력하세요'); history.go(-1) </script>";
exit;
}
include "dbconn.php";
include "boan.php";
// 편법을 이용한 글쓰기 방지
$mode = $HTTP_POST_VARS[mode];
if(!eregi($HTTP_HOST,$HTTP_REFERER)) echo"정상적으로 글을 작성하여 주시기 바랍니다.";
if(getenv("REQUEST_METHOD") == 'GET' ) echo"정상적으로 글을 쓰시기 바랍니다";
if(!$mode) $mode = "write";
// 디렉토리를 검사함
if(!is_dir("data/".$id)) {
@mkdir("data/".$id,0777);
@chmod("data/".$id,0706);
}
// 파일 복사 시스템
if(!copy($file_name,"data/$file_name"))
// 글쓴시간을 구함
$date=time();
// 태그제거함
$title = htmlspecialchars($title);
$name = htmlspecialchars($name);
$memo = htmlspecialchars($memo);
// 디비에 입력
mysql_query("insert into board_$db (name,title,memo,password,hit,date) values ('$name','$title','$memo','$password','0','$date')");
mysql_close($connect);
echo "<meta http-equiv='refresh' content='0;URL=list.php?db=$db'>";
?>
파일네임은 file_name 인데요 이 이름을 카피부분에 넣으면 data 폴더에 넣도록하는 함수명령어가 무엇입니까?
저는 이렇게 해도 안넣어집니다 으악@@@@@@!!
@system("cp data/$file_name"); 이것도 해보고 흐흑흑..
if(!copy($file_name,"data/$file_name")) 해도 서버에 저장되지않습니다.
도와주세요!!! 저의 write_ok.php 소스입니다.
테스트 환경주소는 http://yangws13.webzonei.net/b/list.php?db=free
입니다. T.T
↓↓↓
---------------------write.php-------------------
<br><br><br><br>
<table width="498" border="0" align=center cellpadding="0" cellspacing="0" height="402">
<form method=post action=write_ok.php>
<input type=hidden name=db value='<?=$db?>'>
<tr>
<td width="497" height="3" colspan="8"></td>
<td width="1" height="3"></td>
</tr>
<tr>
<td width="3" height="398" rowspan="7"></td>
<td width="47" height="27">
<p align="center"><span style="font-size:9pt;">제목</span></td>
<td width="2" height="58" rowspan="4"></td>
<td width="445" colspan="5" height="27"><input type=text name=title size=57></td>
<td width="1" height="27"></td>
</tr>
<tr>
<td width="47" height="2"></td>
<td width="445" height="2" colspan="5"></td>
<td width="1" height="2"></td>
</tr>
<td width="47" height="27">
<p align="center"><span style="font-size:9pt;">이름</span></td>
<td width="195" height="27"><input type=text name=name></td>
<td width="2" height="29" rowspan="2"></td>
<td width="47" height="27">
<p align="center"><span style="font-size:9pt;">비번</span></td>
<td width="2" height="29" rowspan="2"></td>
<td width="199" height="27"><input type=password name=password></td>
<td width="1" height="27"></td>
</tr>
<tr>
<td width="47" height="2"></td>
<td width="195" height="2"></td>
<td width="47" height="2"></td>
<td width="199" height="2"></td>
<td width="1" height="2"></td>
</tr>
<tr>
<td width="494" colspan="7" height="312">
<textarea name=memo cols=70 rows=20></textarea>
</td>
<td width="1" height="312"></td>
</tr>
<tr>
<td width="494" height="2" colspan="7"></td>
<td width="1" height="2"></td>
</tr>
<tr>
<td width="291" colspan="6" height="26">
<input type=submit value=" 글올리기 "><script language="javascript">
function check_submit() {
if (document.myForm.name.value == "") {
alert('이름을 입력하세요');
document.myForm.name.focus();
return;
} else if (document.myForm.password.value == "") {
alert('비밀번호를 입력해야 글을 수정하거나 삭제할 수 있습니다.');
document.myForm.password.focus();
return;
} else if (document.myForm.title.value == "") {
alert('제목을 입력하세요');
document.myForm.title.focus();
return;
} else if (document.myForm.memo.value == "") {
alert('내용을 입력하세요');
document.myForm.memo.focus();
return;
} else {
document.myForm.action = "write_ok.php";
document.myForm.submit();
}
}
</script>
</td>
<td width="205" height="26">
<input type=file name="file_name" size="15">
</td>
<td width="1" height="26"></td>
</tr>
<tr>
<td width="3" height="1"></td>
<td width="47" height="1"></td>
<td width="2" height="1"></td>
<td width="195" height="1"></td>
<td width="2" height="1"></td>
<td width="47" height="1"></td>
<td width="2" height="1"></td>
<td width="199" height="1"></td>
<td width="1" height="1"></td>
</tr>
</table>
------------write_ok.php-------------------
<p style="border-collapse:collapse;"align="center"><font color="red"><br>
<?
if(!$title){
echo "<script> window.alert('제목을 입력하세요'); history.go(-1) </script>";
exit;
}
if(!$name){
echo "<script> window.alert('이름을 입력하세요'); history.go(-1) </script>";
exit;
}
if(!$password){
echo "<script> window.alert('비번을 입력하세요'); history.go(-1) </script>";
exit;
}
if(!$memo){
echo "<script> window.alert('내용을 입력하세요'); history.go(-1) </script>";
exit;
}
include "dbconn.php";
include "boan.php";
// 편법을 이용한 글쓰기 방지
$mode = $HTTP_POST_VARS[mode];
if(!eregi($HTTP_HOST,$HTTP_REFERER)) echo"정상적으로 글을 작성하여 주시기 바랍니다.";
if(getenv("REQUEST_METHOD") == 'GET' ) echo"정상적으로 글을 쓰시기 바랍니다";
if(!$mode) $mode = "write";
// 디렉토리를 검사함
if(!is_dir("data/".$id)) {
@mkdir("data/".$id,0777);
@chmod("data/".$id,0706);
}
// 파일 복사 시스템
if(!copy($file_name,"data/$file_name"))
// 글쓴시간을 구함
$date=time();
// 태그제거함
$title = htmlspecialchars($title);
$name = htmlspecialchars($name);
$memo = htmlspecialchars($memo);
// 디비에 입력
mysql_query("insert into board_$db (name,title,memo,password,hit,date) values ('$name','$title','$memo','$password','0','$date')");
mysql_close($connect);
echo "<meta http-equiv='refresh' content='0;URL=list.php?db=$db'>";
?>
댓글 6
http://www.itmembers.net/board/view.php?id=php2&page=2&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=4
그 구현을 하니깐 0바이트 파일만 들어가고 나머지파일은 모두 올려지지않았습니다. 그래서 그 구현은 별로 쓸마음이 없어서요.
구현이라하면 무얼 말하시는건지 모르겠습니다만.. 대부분의 공개게시판의 업로드 기본로직은 똑같습니다. 병목님 강좌 또한 마찬가지구요.
copy() 보다는 move_uploaded_file() 을 쓰는게 좋기는 하지만 copy() 로 해도 업로드 잘 됩니다.
위에 딴게시판은 잘된다고 했는데.. 그 딴게시판이라는게 어떤건지.. 또 같은 서버에서 테스트했는지 궁금하네요.
만약 같은 서버에서 테스트했고 딴 게시판에서도 copy() 로 파일업로드가 구현되어 있다면 님 소스문제입니다.
write.php 에 자바스크립트 사용방법도 틀렸고.. 스크립트함수 호출하는건 안보이고.. 닫는 form 태그도 없고..
write_ok.php 에서 파일업로드하는 부분도 잘못되었습니다.
강좌를 제대로 읽어보시길 바래요!
http://yangws13.webzonei.net/write.zip
이것저것 테스트해보고 뚫어져라 고민하면 고칠 수는 있을지 몰라도, 그러기에는 시간이 너무 많이 소요되기도 하고, 정작 이 사이트를 운영하는 목적과도 다소 어긋나는 것 같습니다.
죄송하지만, 좀 더 고민하셔서 직접 해결하시길 바랍니다.