動的に生成したimg要素をメールフォームの送信内容に追加したい
<希望の処理>
①(js)canvasタグに描いた内容のimg要素を生成
→完了
②(js)送信ボタン押下でform内にinput要素を追加
→完了(typeをfileにしているので必要に応じて要変更)
③(?)追加したinput要素と生成したimg要素を紐付ける
→未了
④(PHP)メールフォームにimg要素と紐づいたinputを追加し、送信する
→未了(img以外は送信動作確認済み)
<不明点>
・②のinput要素のtypeを何にすべきか
・③imgとinputの紐付け方
・送信メールにimgを追加する方法
その他必要な情報がありましたら何なりと!
よろしくお願いいたします!
<追記(参考にしたサイト)>
・javascript
https://teratail.com/questions/11714(orange0190さんの回答)
・PHP
https://codeforfun.jp/php-contact-form/
php
1<?php 2if ($_SERVER['REQUEST_METHOD'] != 'POST') { 3 // POSTでのアクセスでない場合 4 $name = ''; 5 $ruby = ''; 6 $image = ''; 7 $message = ''; 8 $err_msg = ''; 9 $complete_msg = ''; 10 11} else { 12 // フォームがサブミットされた場合(POST処理) 13 // 入力された値を取得する 14 $name = $_POST['name']; 15 $ruby = $_POST['ruby']; 16 $image = $_POST['image']; 17 $message = $_POST['message']; 18 19 // エラーメッセージ・完了メッセージの用意 20 $err_msg = ''; 21 $complete_msg = ''; 22 23 // 空チェック 24 if ($name == '' || $ruby == '') { 25 $err_msg = '全ての項目を入力してください。'; 26 } 27 28 // エラーなし(全ての項目が入力されている) 29 if ($err_msg == '') { 30 $to = 'example@xxx.com'; // 管理者のメールアドレスなど送信先を指定 31 $headers = "From: " . $ruby . "\r\n"; 32 33 // 本文の最後に名前を追加 34 $message .= "\r\n\r\n" . $name; 35 36 // メール送信 37 mb_send_mail($to, $message, $body, $headers); 38 39 // 完了メッセージ 40 $complete_msg = '送信されました!'; 41 42 // 全てクリア 43 $name = ''; 44 $ruby = ''; 45 } 46} 47?> 48<!DOCTYPE html> 49<html> 50<head> 51 <meta charset="UTF-8"/> 52 <meta name="description" content=""> 53 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 54 <title></title> 55 <link href="css/reset.css" rel="stylesheet"> 56 <link href="css/sign.css" rel="stylesheet"> 57 <link href="css/canvas.css" rel="stylesheet"> 58</head> 59<body onload="mam_draw_init();"> 60<section> 61 <div id="contact" class="cn01Bg"> 62 63 <!-- キャンバス --> 64 <div id="canvasCon" class="hide"> 65 <div class="canvasCntnt"> 66 <p class="signDisc">枠内にご署名ください</p> 67 <canvas id="canvas" width="" height=""></canvas> 68 <div class="clearBtn" onclick="prevCanvas()"><span>クリア</span></div> 69 <div id="ok" class="okBtn" onclick="chgImg()">OK</div> 70 </div> 71 </div> 72 73 <div class="sctionContainer"> 74 <div class="cnCon"> 75 <h2 class="cnHead"> 76 <span class="scHeadSc cnHeadSc fontArial">署名する</span> 77 </h2> 78 79 <!-- 未入力アラート --> 80 <?php if ($err_msg != ''): ?> 81 <div><?php echo $err_msg; ?></div> 82 <?php endif; ?> 83 84 <!-- 送信完了テキスト --> 85 <?php if ($complete_msg != ''): ?> 86 <div><?php echo $complete_msg; ?></div> 87 <?php endif; ?> 88 89 <!-- フォーム --> 90 <form method="post" id="form"> 91 <div class="cnFormItem"> 92 <p class="cnFormItemName">お名前</p> 93 <div class="cnFormInput"> 94 <input type="text" name="name" value="<?php echo $name; ?>"> 95 </div> 96 </div> 97 <div class="cnFormItem"> 98 <p class="cnFormItemName">フリガナ</p> 99 <div class="cnFormInput"> 100 <input type="text" name="ruby" value="<?php echo $ruby; ?>"> 101 </div> 102 </div> 103 <div class="cnFormItem"> 104 <p class="cnFormItemName">ご署名</p> 105 <div id="img-box" class="cnFormTextArea"> 106 <img id="newImg"> 107 </div> 108 </div> 109 <div class="cnFormButton"> 110 <input id="submit" type="submit" value="入力内容を送信する"></button> 111 </div> 112 </form> 113 </div> 114 </div> 115 116 </div> 117</section> 118</body> 119<script src="js/jquery-3.4.1.min.js"></script> 120<script src="js/canvas.js"></script> 121<script src="js/sign.js"></script> 122
js
1//sign.js 2'use strict'; 3{ 4 var canvas = document.getElementById("canvas"); 5 var submit = document.getElementById("submit"); 6 submit.addEventListener('click', function() { 7 submitForm(); 8 }); 9 10 function submitForm() { 11 var form = document.getElementById("form"); 12 var base64 = canvas.toDataURL(); 13 var newInput = document.createElement("input"); //input要素作成 14 newInput.type = "file"; 15 newInput.src = base64; 16 newInput.name = "image"; 17 form.appendChild(newInput); //formにinupt要素を追加 18 } 19} 20
回答1件
あなたの回答
tips
プレビュー