質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

Q&A

解決済

1回答

1214閲覧

phpのメールフォームを実装したい。

退会済みユーザー

退会済みユーザー

総合スコア0

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

0グッド

0クリップ

投稿2020/10/13 08:45

前提・実現したいこと

メールフォームを作っています。
ユーザーにお問い合わせいただいた内容をユーザーにも送信し、かつ管理者(自分)
にもしたいです。

発生している問題・エラーメッセージ

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /home/etdfftytg/etdfftytg.php.xdomain.jp/public_html/mail.php:2) in /home/etdfftytg/etdfftytg.php.xdomain.jp/public_html/mail.php on line 6

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home/etdfftytg/etdfftytg.php.xdomain.jp/public_html/mail.php:2) in /home/etdfftytg/etdfftytg.php.xdomain.jp/public_html/mail.php on line 6

日本語訳:
警告:session_start():セッションcookieを送信できません-ヘッダーは/home/etdfftytg/etdfftytg.phpの(/home/etdfftytg/etdfftytg.php.xdomain.jp/public_html/mail.php:2で開始された)によってすでに送信されています。6行目のxdomain.jp/public_html/mail.php

警告:session_start():セッションキャッシュリミッターを送信できません-ヘッダーは既に送信されています(出力は/home/etdfftytg/etdfftytg.php.xdomain.jp/public_html/mail.phpで開始されました: 2)6行目の/home/etdfftytg/etdfftytg.php.xdomain.jp/public_html/mail.php

該当のソースコード

<?php if(!$_POST){ header('Location: /'); } session_start(); if(isset($_POST['name'],$_POST['email'],$_POST['comment'])){ $_SESSION['name'] = $_POST['name']; $_SESSION['email'] = $_POST['email']; $_SESSION['comment'] = $_POST['comment']; } ?> <!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml"> <head> <meta charset="utf-8" /> <title></title> </head> <body> <?php $action = $_POST['action']; $name = htmlspecialchars($_SESSION['name']); $email = htmlspecialchars($_SESSION['email']); $comment = htmlspecialchars($_SESSION['comment']); $to = '@yahoo.co.jp';//メアド $subject = 'form-mail-sample-2';//タイトル $message = '[お名前]'."\n".$name."\n"; $message .= '[email]'."\n".$email."\n"; $message .= '[コメント]'."\n".$comment."\n\n\n"; $header = 'From: '.$email."\r\n"; $header .= 'Reply-To: '.$email."\r\n"; if($action == "post"){ echo '<div class="tb-cell mail-form">'; echo '<form id="form" action="mail.php" method="post">'; echo '<div class="row">'; echo '<div class="cell">'; echo '<label>name</label>'; echo '<!--cell--></div>'; echo '<div class="cell">'; echo $_SESSION['name']; echo '<!--cell--></div>'; echo '<!--row--></div>'; echo '<div class="row">'; echo '<div class="cell">'; echo '<label>email</label>'; echo '<!--cell--></div>'; echo '<div class="cell">'; echo $_SESSION['email']; echo '<!--cell--></div>'; echo '<!--row--></div>'; echo '<div class="row">'; echo '<div class="cell">'; echo '<label>comment</label>'; echo '<!--cell--></div>'; echo '<div class="cell">'; echo $_SESSION['comment']; echo '<!--cell--></div>'; echo '<!--row--></div>'; echo '<div class="row">'; echo '<div class="cell">'; echo '&nbsp;'; echo '<!--cell--></div>'; echo '<div class="cell">'; echo '<p>入力内容が正しければ送信してください</p><br>'; echo '<button type="submit" id="sbtn" name="action" value="send">送 信</button>'; echo '<button type="button" onclick="history.go(-1)">入力フォームに戻る</button>'; echo '<!--cell--></div>'; echo '<!--row--></div>'; echo '</form>'; echo '<!--tb-cell--></div>'; }elseif($action == "send"){ $status = mb_send_mail($to, $subject, $message, $header); if ($status) { echo '<p class="msg">メッセージは正常に送信されました</p>'; echo '<button type="button" onclick="history.go(-2)">入力フォームに戻る</button>'; } else { echo '<p class="msg">メッセージの送信に失敗しました</p>'; echo '<button type="button" onclick="history.go(-2)">入力フォームに戻る</button>'; } $_SESSION = array(); session_destroy(); } ?> </body> </html>

html

1<!DOCTYPE html> 2 3<html lang="ja" xmlns="http://www.w3.org/1999/xhtml"> 4<head> 5 <meta charset="utf-8" /> 6 <title>メール</title> 7</head> 8<style> 9 10 .tb-cell { 11 display: table; 12 width: 300px; 13 margin: 20px auto 40px auto; 14 text-align: left; 15 } 16 17 .tb-cell .row { 18 display: table-row; 19 } 20 21 .tb-cell .row .cell { 22 display: table-cell; 23 border: 1px solid #ddd; 24 padding: 10px; 25 vertical-align: middle; 26 color: #fff; 27 } 28 29 .tb-cell .row .cell:nth-child(odd) { 30 width: 100px; 31 } 32 33 .tb-cell .row .cell:nth-child(even) { 34 width: 200px; 35 } 36 37 .mail-form .row .cell { 38 padding: 5px; 39 } 40 41 .mail-form .row .cell:nth-child(1) { 42 background: #9fb7d4; 43 } 44 45 .mail-form .row .cell:nth-child(2) { 46 background: #ccc; 47 } 48 49 input[type="text"], 50 input[type="email"] { 51 height: 30px; 52 font-size: 16px; 53 } 54 55 textarea { 56 height: 100px; 57 font-size: 16px; 58 } 59 60 button { 61 color: #fff; 62 border: none; 63 padding: 10px; 64 font-size: 16px; 65 cursor: pointer; 66 } 67 68 button[type="button"] { 69 margin-left: 10px; 70 } 71 72 button[type="button"], 73 button[type="submit"] { 74 background: #afc6e2; 75 } 76 77 button[type="reset"] { 78 background: none; 79 } 80 81 button[type="button"]:hover, 82 button[type="submit"]:hover { 83 background: #ddd; 84 } 85 86 button[type="reset"]:hover { 87 text-decoration: underline; 88 } 89 90 @media (min-width: 768px) { 91 .tb-cell { 92 width: 800px; 93 } 94 95 .tb-cell .row { 96 display: table-row; 97 } 98 99 .tb-cell .row .cell { 100 display: table-cell; 101 border: 1px solid #ddd; 102 padding: 10px; 103 vertical-align: middle; 104 color: #fff; 105 } 106 107 .tb-cell .row .cell:nth-child(odd) { 108 width: 200px; 109 } 110 111 .tb-cell .row .cell:nth-child(even) { 112 width: 600px; 113 } 114 115 input[type="text"], 116 input[type="email"] { 117 width: 300px; 118 } 119 120 textarea { 121 width: 580px; 122 } 123 /* ** */ 124 } 125</style> 126<body> 127 128 <div class="tb-cell mail-form"> 129 <form id="form" action="mail.php" method="post"> 130 <div class="row"> 131 <div class="cell"> 132 <label>name</label> 133 <!--cell--> 134 </div> 135 <div class="cell"> 136 <input type="text" name="name" required> 137 <!--cell--> 138 </div> 139 <!--row--> 140 </div> 141 <div class="row"> 142 <div class="cell"> 143 <label>email</label> 144 <!--cell--> 145 </div> 146 <div class="cell"> 147 <input type="email" name="email" required> 148 <!--cell--> 149 </div> 150 <!--row--> 151 </div> 152 <div class="row"> 153 <div class="cell"> 154 <label>comment</label> 155 <!--cell--> 156 </div> 157 <div class="cell"> 158<textarea name="comment" required></textarea> 159 <!--cell--> 160 </div> 161 <!--row--> 162 </div> 163 <div class="row"> 164 <div class="cell"> 165 &nbsp; 166 <!--cell--> 167 </div> 168 <div class="cell"> 169 <button type="submit" id="sbtn" name="action" value="post">入力内容を確認</button> 170 <button type="reset" id="rbtn">リセット</button> 171 <!--cell--> 172 </div> 173 <!--row--> 174 </div> 175 </form> 176 <!--tb-cell--> 177 </div> 178 179</body> 180</html>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

このレベルのコードはインターネット上に出すと問題になるので、実務使用するのであれば、業者に依頼してください。

学習用途であるのであれば、メール送信に拘らず、次のステップに進んでしまうのがオススメです。
メールフォームを適切に作り上げるのは、初学者には無理です。

*実装レベルで使用するには、php のみでなく、インフラやメールフォームに関しての攻撃手法、mail システムに関しする技術のそれぞれをそれなりのレベルで知っている必要があります。

参考:『PHP メールフォーム』の上位10件が勝率10%

ちなみに、質問のスクリプトには、メールヘッダインジェクションに関する脆弱性が含まれています。

投稿2020/10/13 09:08

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/10/13 09:46

インターネット上に出すと問題とは、セキュリティーに関してですか?
退会済みユーザー

退会済みユーザー

2020/10/13 10:03

SPAM の発射台になります。 また、使用しているドメインが SAPM 登録されると、他のシステムから出したメールも SPAM として判定されるようになります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問