PHP For Beginnersチュートリアル　その13　コンタクトフォームの練習

##このシリーズの目的

体系的なwebコーディングの訓練ができるようになるためにPHPの初学のきっかけかつ、PHPでログインフォームやフォームを実装することができるようになるために

[PHP For Beginners](https://www.youtube.com/playlist?list=PLgt-G5tEOlKX4LKrBCYfjcyrp7wmnRdAL)

上記のチュートリアルを進めているのでその備忘録。

[前回](https://qiita.com/shitikakei/items/4f20491751107bd99e2f)

##内容

**今回のチュートリアル**

[PHP Tutorial: Create Contact Form & Send an Email With Attachment Using PHPMailer v6](https://www.youtube.com/watch?v=-J9k4m1yhco&list=PLgt-G5tEOlKX4LKrBCYfjcyrp7wmnRdAL&index=15)

**このチュートリアルでやること**

・[その7](https://qiita.com/shitikakei/items/4cf7c57c8a7fbd3c3f65) の復習

**成果物**

```php:sendemail.php

<?php 	

		$msg = "";
		use PHPMailer\PHPMailer\PHPMailer;
		use PHPMailer\PHPMailer\Except;
		use PHPMailer\PHPMailer\SMPT;


		if (isset($_POST['submit'])) {
				$subject = $_POST['subject'];
				$email = $_POST['email'];
				$message = $_POST['message'];

		if (isset($_FILES['attachment']['name']) && $_FILES['attachment']['name'] != "") {
			$file = "attachment/". basename($_FILES['attachment']['name']);
			move_uploaded_file($_FILES['attachment']['tmp_name'],$file);
		
		} else
			$file = "";

			mb_language("japanese");
			mb_internal_encoding("UTF-8");
			require 'vendor/autoload.php';
			require 'Mailtrap-config.php';


			    $mail = new PHPMailer();

			    // Server

			    $mail->isSMTP();
			    $mail->SMTPAuth = true;
			    $mail->Host = MAIL_HOST;
			    $mail->Username = MAIL_USERNAME;
			    $mail->Password = MAIL_PASSWORD;
			    $mail->SMTPSecure = MAIL_ENCRPT;
			    $mail->Port = SMTP_PORT;

			    // Recipients
			    $mail->setFrom($email);
				// $toname = mb_encode_mimeheader("$name", 'ISO-2022-JP', 'B', "\n");
			    $mail->addAddress(TO);
			    // $mail->addAttachment($attachment);

			    // Content
			    $mail->Subject = mb_encode_mimeheader("$subject", "ISO-2022-JP", "UTF-8");
			    $mail->Body = mb_convert_encoding("$message","ISO-2022-JP", "UTF-8");
			    $mail->CharSet = 'ISO-2022-JP';
			    $mail->Encoding = "7bit";
			    $mail->addAttachment($file);

			    // Select HTML or NOT

			    $mail->isHTML(true);

			   if ($mail->send()) {
			    	$msg = "Your Email has been sent, thank you!";
			    } else {
			    	$msg = "Something wrong happend! Please try again!";

			    	unlink($file);//サーバーに毎回添付したファイルが保存されないようにする。送信先には問題なく添付される。
			    }



		}

 ?>


<!DOCTYPE html>
<html>
<head>
	<title>PHP Mail Contact Form </title>
	<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
	<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
	<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
	<link rel="stylesheet" type="text/css" href="css/index.css">
</head>
<body>
	<div class="container">
		<div class="row justify-content-center">
			<div class="col-md-6 mail">

				<?php if ($msg != "") {
					echo "$msg <br>	<br>";
				}
				?>

				<form action="sendmail.php" method="post" enctype="multipart/form-data">
					<input class="form-control" type="text" name="subject" placeholder="Subject......"><br>	
					<input class="form-control" type="text" name="email" placeholder="Email......"><br>	
					<textarea class="form-control" name="message"  placeholder="What`up?"></textarea><br>	
					<input class="form-control" type="file" name="attachment"><br>	
					<input class="btn btn-primary" type="submit" name="submit" value="Send Email">
				</form>
			</div>
			
		</div>
		
	</div>


</body>
</html>

```



## 変更点

unlink関数を使い、サーバーにユーザー側がアップロードした添付ファイルが残らないようにする。
メールには問題なくて添付されて送られるので問題ない。
また。Bootstrapを用いたフォームなのでテキスト要素にはform-controlクラスを付随。



## 今回のコードの注釈


```php:unlink

unlink($file);

```
指定した引数を削除する。
この場合は$fileには添付ファイルのパスが代入されているので、それを削除するということはそのファイルを削除することになる。