いろんなコードを参考にして
なんとか
同じファイル名で添付した場合上書きされたので修正しました。
強引ですが
for文でスマートに書きたいですが初心者ですので・・
confirm.php
<?php
$name= $_POST['input01'];
$name= $_POST['input02'];
$fname01= $_POST['fname01'];
$fname02= $_POST['fname02'];
$other= $_POST['other'];
$other_br = nl2br($other);//改行
$count = 1;
while ($count < 8){
if (is_uploaded_file($_FILES["upload0".$count]["tmp_name"])) {
if (move_uploaded_file($_FILES["upload0".$count]["tmp_name"], "files/" . $f01."_0".$count.".".$f02)) { //ファイル名が重複すると上書きしてしまうので番号を振る(特にiphone
chmod("files/" . $f01."_0".$count.".".$f02, 0644);
// echo $_FILES["upload0".$count]["name"] . "をアップロードしました。";
} else {
// echo "ファイルをアップロードできません。";
}
} else {
// echo "ファイルが選択されていません。";
}
$count++;
}
?>
<!DOCTYPE html>
<html lang="ja">
<body>
<ul>
<?php if (!empty($input01)){?>
<li> <?php echo($input01); ?>
<input type="hidden" name="input01" value="<?php echo($input01); ?>">
</li>
<?php } else{} ?>
<?php if (!empty($input02)){?>
<li> <?php echo($input02); ?>
<input type="hidden" name="input02" value="<?php echo($input02); ?>">
</li>
<?php } else{} ?>
<?php if (!empty($fname01)){?>
<li>
<?php echo($fname01); ?>
<input type="hidden" name="fname01" value="<?php echo($fname01); ?>">
<li>
<?php } else{} ?>
<?php if (!empty($fname02)){?>
<li>
<?php echo($fname02); ?>
<input type="hidden" name="fname02" value="<?php echo($fname02); ?>">
<li>
<?php } else{} ?>
<?php if (!empty($other)){?>
<li>
<?php echo($other); ?>
<input type="hidden" name="other" value="<?php echo($other); ?>">
<li>
<?php } else{} ?>
</ul>
</section>
<button onclick="history.back()" type="button">修正</button><button type="submit">送信</button>
</section>
</body>
</html>
main.php
<?php
ini_set('display_errors', 0); //0にするとエラー出力しない1は出力
if(isset($_POST['input01'])){
$input01= $_POST['input01'];
}else{
$input01="";
};
if(isset($_POST['input02'])){
$input02= $_POST['input02'];
}else{
$input02="";
};
if(isset($_POST['fname01'])){
$fname01= $_POST['fname01'];
$out = explode(".",$fname01,2);
$out_A = $out[0];
$out_B = $out[1];
$fname01=$out_A."_01.".$out_B;
// echo($fname01);
}else{
$fname01="";
};
if(isset($_POST['fname02'])){
$fname02= $_POST['fname02'];
$out = explode(".",$fname02,2);
$out_A = $out[0];
$out_B = $out[1];
$fname01=$out_A."_02.".$out_B;
// echo($fname02);
}else{
$fname02="";
};
//メーラーで2重改行されるので1改行に
if(isset($_POST['other'])){
$other= $_POST['other'];
$other = str_replace(array("\r\n", "\r"), "\n", $other);
}else{
$other="";
};
$file01= "files/".$fname01;
$file02= "files/".$fname02;
$to[] = "test1@test.com";
$to[] = "test2@test.com";
$from_email= "";
$from_name = $name;
$subject = '添付ファイルフォーム';
$body = "{$input01}様の送信内容は以下のとおりです。\n\n";
$body .= "--------***--------------------\n";
$body .= "input01: {$input01}\n";
$body .= "input02: {$input02}\n";
$body .= "ファイル1: {$fname01}\n";
$body .= "ファイル2: {$fname02}\n";
$body .= "その他: {$other}\n";
// send the email
foreach( $to as $to_email ) {
sendmail_jpn($to_email, $subject, $body, $from_email,$from_name, $file01, $file02, $fname01, $fname02);
sleep(1);
}
//echo ($fname01);
//echo ($fname02);
//echo ($fname03);
//echo ($fname04);
//echo ($fname05);
//echo ($fname06);
//echo ($fname07);
//echo "送信完了";
//関数-----------------------------------
function sendmail_jpn($to, $subject, $message, $from_email,$from_name, $filepath01, $filepath02, $filename01, $filename02)
{
$mime_type = "application/octet-stream";
// マルチパートなので、パートの区切り文字列を指定
$boundary = '----=_Boundary_' . uniqid(rand(1000,9999) . '_') . '_';
// 件名のエンコード
$subject = mb_convert_encoding($subject, 'ISO-2022-JP', 'auto');
$subject = mb_encode_mimeheader_ex($subject);
// 本文のエンコード
$message = mb_convert_encoding($message, 'ISO-2022-JP', 'auto');
// toをエンコード
// $to = mb_convert_encoding($mail['to']['name'], "auto", "auto");
$to = "=?ISO-2022-JP?B?" . base64_encode($to) . '?= <' . $to . '>';
// fromをエンコード
$from_name = mb_convert_encoding($from_name, 'ISO-2022-JP', 'auto');
$from = "=?ISO-2022-JP?B?" . base64_encode($from_name) . '?= <' . $from_email . '>';
// 添付ファイルのエンコード01
if(!empty($filename01)){
$filename01 = mb_convert_encoding($filename01, 'ISO-2022-JP', 'auto');
$filename01 = "=?ISO-2022-JP?B?" . base64_encode($filename01) . "?=";
}else{
}
// 添付ファイルのエンコード02
if(!empty($filename02)){
$filename02 = mb_convert_encoding($filename02, 'ISO-2022-JP', 'auto');
$filename02 = "=?ISO-2022-JP?B?" . base64_encode($filename02) . "?=";
}else{
}
// ヘッダーの指定
$head = "";
$head .= "From: {$from}\n";
$head .= "MIME-Version: 1.0\n";
$head .= "Content-Type: multipart/mixed; boundary=\"{$boundary}\"\n";
$head .= "Content-Transfer-Encoding: 7bit";
$body = "";
// 本文
$body .= "--{$boundary}\n";
$body .= "Content-Type: text/plain; charset=ISO-2022-JP;" .
"Content-Transfer-Encoding: 7bit\n";
$body .= "\n";
$body .= "{$message}\n";
$body .= "\n";
// 添付ファイルの処理01
if(!empty($filename01)){
$body .= "--{$boundary}\n";
$body .= "Content-Type: {$mime_type}; name=\"{$filename01}\"\n" .
"Content-Transfer-Encoding: base64\n" .
"Content-Disposition: attachment; filename=\"{$filename01}\"\n";
$body .= "\n";
$fp = fopen( $filepath01, "r" );
$contents01 = fread( $fp, filesize($filepath01) );
fclose( $fp );
$f_encoded01 = chunk_split(base64_encode($contents01)); //添付ファイルをbase64エンコードする
$body .= "{$f_encoded01}\n";
$body .= "\n";
}else{
}
// 添付ファイルの処理02
if(!empty($filename02)){
$body .= "--{$boundary}\n";
$body .= "Content-Type: {$mime_type}; name=\"{$filename02}\"\n" .
"Content-Transfer-Encoding: base64\n" .
"Content-Disposition: attachment; filename=\"{$filename02}\"\n";
$body .= "\n";
$fp = fopen( $filepath02, "r" );
$contents02 = fread( $fp, filesize($filepath02) );
fclose( $fp );
$f_encoded02 = chunk_split(base64_encode($contents02)); //添付ファイルをbase64エンコードする
$body .= "{$f_encoded02}\n";
$body .= "\n";
}else{
}
}
// mb_encode_mimeheaderのバグ対策用
function mb_encode_mimeheader_ex($text, $split_count = 34) {
$position = 0;
$encorded = '';
while ($position < mb_strlen($text, 'ISO-2022-JP')) {
if ($encorded != '') {
$encorded .= "\n ";
}
$output_temp = mb_strimwidth($text, $position, $split_count, '', 'ISO-2022-JP');
$position = $position + mb_strlen($output_temp, 'ISO-2022-JP');
$encorded .= "=?ISO-2022-JP?B?" . base64_encode($output_temp) . "?=";
}
return $encorded;
}
$unlink= 0; //サーバー内のファイルを毎回削除したい場合は"1"にする。
if($unlink==1){
// ワイルドカードを使って削除したいファイルを指定
$fileName = "files/*.*";
// glob() でヒットしたファイルのリストを取得
foreach ( glob($fileName) as $val ) {
// ファイルの削除
unlink($val);
}
}
?>
<!DOCTYPE html>
<html lang="ja">
<body>
<p>送信しました</p>
</body>
</html>