폼메일 문의 만들었는데 파일 첨부가 안됩니다.
본문
견적문의 만들었습니다.
폼 내용은 잘 나가는데 파일 첨부에서 에러가 납니다. 메일 받아보면 파일만 안 들어옵니다.
에러코드 보니 다음 부분에서 에러가 나는 거 같은데 원인이 뭔지 모르겠습니다.
동일 서버에 설치된 그누4에서 잘 되는데 5에선 안되네요 ㅠㅠ
$file = array();
for ($i=1; $i<=$attach; $i++) { --> 이 라인에서 에러 난다고 뜹니다.
if ($_FILES['file'.$i]['name'])
$file[] = attach_file($_FILES['file'.$i]['name'], $_FILES['file'.$i]['tmp_name']);
폼메일 코드는 대충..
<?php
include_once('./_common.php');
$g5['title'] = '견적문의';
include_once('./_head.php');
?>
<form name="fformmail" action="sendform.php" method="post" enctype="multipart/form-data">
<label for="mb_name">고객성명<strong class="sound_only">필수</strong></label>
<input type="text" name="mb_name" id="mb_name" required class="frm_input required" size="30" value="<?php if($member['mb_level'] >= '2'){ ?><?php echo get_text($member['mb_name']) ?> (ID: <?php echo $member['mb_id'] ?>)<?php } ?>" />
<label for="company">회사명 / 근무처</label>
<input type="text" name="company" class="frm_input" size="30" />
.
.
.
.
.
.
<label for="file1">Attachments (첨부파일) 1</label>
<input type="file" name="file1" id="file1" class="frm_input">
<label for="file2">Attachments (첨부파일) 2</label>
<input type="file" name="file2" id="file2" class="frm_input">
<input type=image id="btn_submit" src="send.gif" border="0">
</form>
<?php include_once('./_tail.php'); ?>
메일발송 코드 / sendform.php
include_once('./_common.php');
include_once(G5_LIB_PATH.'/mailer.lib.php');
if(empty($_POST["mb_name"])){
alert("필수값이 넘어오지 않았습니다.\\n\\n다시 확인하십시오.");
}
while(list($key,$val) = each($_POST)){
if($key == "faction" || $key == "x" || $key == "y") continue;
$arrkey[] = $key;
$arrval[] = $val;
}
$file = array();
for ($i=1; $i<=$attach; $i++) {
if ($_FILES['file'.$i]['name'])
$file[] = attach_file($_FILES['file'.$i]['name'], $_FILES['file'.$i]['tmp_name']);
$subject = $_POST["mb_name"] . " 님의 견적문의 폼메일";
$admin = get_admin('super');
ob_start();
include "./post.php";
$content = ob_get_contents();
ob_end_clean();
mailer($_POST["mb_name"], $_POST["mb_email"], "수신이메일", $subject, $content, 1, $file);
실제 메일전송 코드 / post.php
<html><head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>[<?=$subject?>]</title>
</head>
<style>
body, th, td, form, input, select, text, textarea, caption { font-size: 12px; font-family:sans-serif;}
.line {border: 1px solid #868F98;}
</style>
<body leftmargin=0 topmargin=10 marginwidth=0 marginheight=0>
<table width="95%" cellpadding=5 cellspacing=0 border=1 align="center">
<col width="20%" bgcolor="#eaeaea" style="font:bold;">
<col width="">
<tr>
<td colspan=2 height=40 bgcolor="#ffffff">
<?=$subject?>
</td>
</tr>
<? for($i=0;$i<count($arrkey);$i++){ ?>
<tr>
<td><?=$arrkey[$i]?></td>
<td><?echo str_replace("\r\n","<br>",stripslashes($arrval[$i]));?></td>
</tr>
<?}?>
</table></body></html>
답변 2
for ($i=1; $i<=$attach; $i++) 에서 에러가 난다고 하셨는데
변수 i가 1부터 변수 attach값까지 for문으로 반복하는 구문인데
현재 위의 소스상에서는 변수 attach($attach) 에 대한 변수값이 없네요...?
이것부터 확인을 해보세요. 변수값이 없으니 에러가 날것 같은데요...
다시 확인해 보니 한가지 빠진 것 같아 보입니다.
폼메일 코드에서
<form name="fformmail"
action=
"sendform.php"
method=
"post"
enctype=
"multipart/form-data"
>
부분 다음에
<input type="hidden" name="attach" value="2">
이 소스를 추가하셔야 attach 값을 가져올 것 같네요. value값이 2인 것은 첨부파일이 2개 이기에 그렇구요.
이게 빠졌으면 그누보드 4소스에서도 안되었을텐데요??? 거기는 있는 소스인데 그누5로 변경하면서 빼 먹은게 아닌가 추측해 보고요.
post.php파일에서도 그누5는 html5 버전이므로
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<html>
<head>