반응형
안녕하세요
파일 업로드를 어떻게 하는지 알아보겠습니다.
파일 업로드를 위해선 form 의 input type=file이 필요하죠
그 전 에
enctype를 추가해야합니다 form옵션에..
<form enctype="multipart/form-data">이렇게 추가를 해야합니다.
그 후에 write_ok를 수정해보겠습니다.
write_ok.php |
<? session_start(); include "db_info.php"; $max_thread_result=mysql_query("select max(thread) from $board",$conn); $max_thread_fetch=mysql_fetch_array($max_thread_result); $name=$_POST['name']; $email=$_POST['email']; $pass=$_POST['pass']; $title=$_POST['title']; $comment=$_POST['comment']; $REMOTE_ADDR=$_SERVER["REMOTE_ADDR"]; $filename=NULL; $max_thread=ceil($max_thread_fetch[0]/1000)*1000+1000; if($_FILES['upfile']['name']){ $filename=$_FILES['upfile']['name']; $path='/files/'.$filename; move_uploaded_file($_FILES['upfile']['tmp_name'],$path); } $query="insert into $board(thread,depth,name,pass,email,title,see,wdate,ip,comment,filename) values('$max_thread',0,'$name','$pass','$email','$title',0,now(),'$REMOTE_ADDR','$comment','$filename')"; $result=mysql_query($query,$conn); mysql_close($conn); echo "<meta http-equiv='refresh' content='1; URL=list.php?no=0'>"; ?> |
수정된 부분을 보자면
if($_FILES['upfile']['name']){
$filename=$_FILES['upfile']['name'];
$path='/files/'.$filename;
move_uploaded_file($_FILES['upfile']['tmp_name'],$path);
}
$query="insert into $board(thread,depth,name,pass,email,title,see,wdate,ip,comment,filename) values('$max_thread',0,'$name','$pass','$email','$title',0,now(),'$REMOTE_ADDR','$comment','$filename')";
업로드하는 파일의 이름이 있다면(업로드 파일이 있다면)
$filename함수에 업로드되는 파일의 이름을 저장합니다.
$path에는 파일이 저장될 경로를 저장합니다.
move_uploaded_file(업로드 임시파일,경로)
형태이므로
업로드되는 파일의 임시이름과, 경로를 적어 파일이 저장이 되게 합니다.
$tmpname=$_FILES['upfile']['tmp_name'] //서버에 저장된 임시 파일입니다.
$filename=$_FILES['upfile']['name'] //업로드한 파일의 이름입니다.
주의사항
파일을 업로드 하는 폴더의 권한이 있어야합니다.
저는 보안을 위해 루트 바로 밑에다가 저장을 하겠습니다.
#chmod 777 /files
주의사항 2
업로드 에러가 0번(정상적인 업로드완료)인데도
업로드 폴더에 없다면 SElinux를 보셔야합니다.
(이것때문에 몇시간을...ㅂㄷㅂㄷ)
#chcon -t httpd_sys_rw_content_t '경로'
를 사용하셔서 적용해주시면 됩니다.
확인은 ls -Z로 확인가능
파일이 있는 경우 글제목 앞에 이미지가 한개가 뜹니다.
list.php에서 코드를 확인할 수 있습니다.
저기에 쓰이는 이미지도 selinux를 설정해주셔야
지 엑박으로 안뜨고 잘보입니다.
반응형
'IT > PHP' 카테고리의 다른 글
22##]PHP로 홈페이지 만들기>파일 다운로드 (0) | 2017.04.22 |
---|---|
20##]PHP로 홈페이지 만들기>댓글보이기(1Depth) (0) | 2017.04.22 |
19##]PHP로 홈페이지 만들기>댓글 완료 (0) | 2017.04.22 |