테스트 사이트 - 개발 중인 베타 버전입니다

첨부파일 데이터 저장 채택완료

생준 5년 전 조회 2,217

이용자가 첨부파일을 등록하면 데이터서버에 저장을 하고싶습니다.

 

현재 코드는 이렇습니다.

</strong></p>

<p><?php</p>

<p>include_once('./_common.php');</p>

<p> </p>

<p>@mkdir(G5_DATA_PATH.'/file/repair_request', G5_DIR_PERMISSION);</p>

<p>@chmod(G5_DATA_PATH.'/file/repair_request', G5_DIR_PERMISSION);</p>

<p>if($_FILES['u_file']) {</p>

<p>    $attach = $_FILES['u_file'];</p>

<p>    $name = preg_replace("/\.(php|phtm|htm|cgi|pl|exe|jsp|asp|inc)/i", "$0-x", $attach['name']);</p>

<p>    $name = substr(md5(uniqid($_SERVER['REQUEST_TIME'])),0,8).'_'.str_replace('%', '', urlencode($name));</p>

<p>    $ATTACH_DIR = G5_DATA_PATH.'/file/repair_request';</p>

<p>    $dest_file  = $ATTACH_DIR.$name;</p>

<p>    $url = $ATTACH_DIR.$name;</p>

<p>    if(!is_dir($ATTACH_DIR)) {</p>

<p>        if(@mkdir($ATTACH_DIR, 0777, true)) {</p>

<p>            if(is_dir($ATTACH_DIR)) {</p>

<p>                @chmod($ATTACH_DIR, 0777);</p>

<p>            }</p>

<p>        }</p>

<p>    }</p>

<p>    if(move_uploaded_file($attach['tmp_name'], $dest_file)) {</p>

<p>        $attach_url = $url;</p>

<p>        $attach_name = $attach['name'];</p>

<p>        $attach_size = $attach['size'];</p>

<p>        $attach_type = $attach['type'];</p>

<p>    }</p>

<p>}</p>

<p> </p>

<p>$femail = $_POST['femail'];</p>

<p>$temail = $_POST['temail'];</p>

<p>$remail = $_POST['remail'];</p>

<p>$hemail = $_POST['hemail'];</p>

<p>$subject = $_POST['tit'];</p>

<p>$message = $_POST['m_txt'];</p>

<p>$u_name = $_POST['u_name'];</p>

<p>$s_date = $_POST['s_date'];</p>

<p>$add = $_POST['add'];</p>

<p>$u_tel = $_POST['u_tel'];</p>

<p>$b_date = $_POST['b_date'];</p>

<p> </p>

<p>$boundary = "----" . uniqid("part"); // 구분자</p>

<p> </p>

<p>// --- 헤더 --- //</p>

<p>$headers = "Return-Path: ".str_replace("\\", "", $femail)."\r\n";</p>

<p>$headers .= "From: ".str_replace("\\", "", $femail)."\r\n";</p>

<p>if($remail) {</p>

<p>    $headers .= "Cc: ".str_replace("\\", "", $remail)."\r\n";</p>

<p>}</p>

<p>if($hemail) {</p>

<p>    $headers .= "Bcc: ".str_replace("\\", "", $hemail)."\r\n";</p>

<p>}</p>

<p> </p>

<p>if($attach_url && $attach_name) { // --- 첨부파일 --- //</p>

<p>    $filename=$attach_name;</p>

<p>    $fp = fopen($attach_url,"r");</p>

<p>    $file = fread($fp,$attach_size);</p>

<p>    fclose($fp);</p>

<p>    if ($attach_type == ""){</p>

<p>        $attach_type = "application/octet-stream";</p>

<p>    }</p>

<p>    // --- 헤더 --- //</p>

<p>    $headers .= "MIME-Version: 1.0\r\n";</p>

<p>    $headers .= "Content-Type: Multipart/mixed; boundary=\"$boundary\"";</p>

<p>    // --- 본문 --- // </p>

<p>    $mailbody = "This is a multi-part message in MIME format.\r\n\r\n";</p>

<p>    $mailbody .= "--$boundary\r\n";</p>

<p>    $mailbody .= "Content-Type: text/html; charset=utf-8\r\n";</p>

<p>    $mailbody .= "Content-Transfer-Encoding: base64\r\n\r\n";</p>

<p>    $mailbody .= chunk_split(base64_encode(str_replace("\\", "", $s_date. "\r\n" .$add. "\r\n" .$u_name. "\r\n" .$u_tel. "\r\n"  .$b_date. "\r\n" .$message))) . "\r\n";</p>

<p>    // --- 첨부 --- // </p>

<p>    $mailbody .= "--$boundary\r\n"; </p>

<p>    $mailbody .= "Content-Type: ".$attach_type."; name=\"".$filename."\"\r\n";</p>

<p>    $mailbody .= "Content-Transfer-Encoding: base64\r\n";</p>

<p>    $mailbody .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n";</p>

<p>    $mailbody .= base64_encode($file)."\r\n\r\n";</p>

<p>    $mailbody .= "--$boundary--";</p>

<p>}</p>

<p>else {</p>

<p>    // --- 헤더 --- // </p>

<p>    $headers .= "MIME-Version: 1.0\r\n"; </p>

<p>    $headers .= "Content-Type: Multipart/alternative; boundary = \"$boundary\"";</p>

<p>    // --- 본문 --- //</p>

<p>    $mailbody = "--$boundary\r\n"; </p>

<p>    $mailbody .= "Content-Type: text/html; charset=utf-8\r\n";</p>

<p>    $mailbody .= "Content-Transfer-Encoding: base64\r\n\r\n";</p>

<p>    $mailbody .= chunk_split(base64_encode(str_replace("\\", "", $s_date. "\r\n" .$add. "\r\n" .$u_name. "\r\n" .$u_tel. "\r\n"  .$b_date. "\r\n" .$message))) . "\r\n";</p>

<p>    $mailbody .= "--$boundary--\r\n\r\n"; </p>

<p>}</p>

<p> </p>

<p>$ret = mail($temail, $subject, $mailbody, $headers);</p>

<p> </p>

<p>if(!$tit || !$u_name|| !$u_tel){</p>

<p>    alert('잘못된 접근입니다.');</p>

<p>    exit;</p>

<p>}</p>

<p> </p>

<p>$file = "";</p>

<p>



 </p>

<p>$sql = "</p>

<p>insert into </p>

<p>    repair_request</p>

<p>set</p>

<p>    `tit`       = '".$tit."'    </p>

<p>,   `s_date`    = '".$s_date."' </p>

<p>,   `add`       = '".$add."'    </p>

<p>,   `u_name`    = '".$u_name."' </p>

<p>,   `u_tel`     = '".$u_tel."'  </p>

<p>,   `b_date`    = '".$b_date."' </p>

<p>,   `m_txt`     = '".$m_txt."'  </p>

<p>,   `u_pw`      = '".$u_pw."'   </p>

<p>,   `file`      = '".$file."'   </p>

<p>";</p>

<p> </p>

<p>sql_query($sql);</p>

<p> </p>

<p>$request_idx = sql_insert_id();</p>

<p>$ss_name = 'repair_request_'.$request_idx;</p>

<p>set_session($ss_name, TRUE);</p>

<p> </p>

<p>goto_url("./sub0603.php?idx=".$request_idx);</p>

<p>?></p>

<p> </p>

<p><strong>

댓글을 작성하려면 로그인이 필요합니다.

답변 2개

채택된 답변
+20 포인트
B
5년 전

데이터 서버는 다른 곳인가요?

</p>

<p>    $ATTACH_DIR = G5_DATA_PATH.'/file/repair_request';

    $dest_file  = $ATTACH_DIR.$name;

    $url = $ATTACH_DIR.$name;

    if(!is_dir($ATTACH_DIR)) {

        if(<a href="//sir.kr/main/member/?mb_id=sterian" class="mention_user_info" target="_blank">@mkdir</a>($ATTACH_DIR, 0777, true)) {

            if(is_dir($ATTACH_DIR)) {

                @chmod($ATTACH_DIR, 0777);

            }

        }

    }

    if(move_uploaded_file($attach['tmp_name'], $dest_file)) {

        $attach_url = $url;

        $attach_name = $attach['name'];

        $attach_size = $attach['size'];

        $attach_type = $attach['type'];</p>

<p>        // 서버에 저장된 파일을 다른 곳에 올리고 싶다면 여기에서 ftp 함수 사용, 아래 참고</p>

<p>        // <a href="https://www.php.net/manual/en/ftp.examples-basic.php" target="_blank" rel="noopener noreferrer">https://www.php.net/manual/en/ftp.examples-basic.php</a></p>

<p>        // 다른 정보도 저장하려면 그만큼 코드를 추가시키면 되겠네요.</p>

<p>        // 그 외 여러 방법이 있는데 생략</p>

<p>    }</p>

<p>

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

제작의뢰로 가셔야할거같아요

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인