0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

確認画面挟んだ場合添付ファイルフォーム

Last updated at Posted at 2016-07-11

いろんなコードを参考にして
なんとか

同じファイル名で添付した場合上書きされたので修正しました。
強引ですが
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>

0
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?