LoginSignup
0
1

More than 3 years have passed since last update.

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

Posted at

このシリーズの目的

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

PHP For Beginners

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

前回

内容

今回のチュートリアル

PHP Tutorial: Create Contact Form & Send an Email With Attachment Using PHPMailer v6

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

その7 の復習

成果物

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クラスを付随。

今回のコードの注釈

unlink

unlink($file);

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

0
1
0

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