フォームの必須項目を入力をチェックし大丈夫ならメールを送信するプログラムをajaxを使い作ってみました。
その際問題なくプログラムは動きやりたいことも問題なく出来ました。
がセキュリティに関してはこちらで問題がないのか?
といったところが不安になり今回はご質問させていただきました。
###こちらがフォームのhtmlのタグです
html
1<form action="" method="POST"> 2 <input type="text" name="name" placeholder="名前(必須)" /> 3 <input type="email" name="email" placeholder="Email(必須)" /> 4 <input type="tel" name="tel" placeholder="電話番号" /> 5 <textarea rows="7" name="free" placeholder="メッセージ(必須)"></textarea> 6 <input type="submit" name="send" id="aaaa" value="送信" /> 7</form>
###こちらがajaxとチェックが行われる部分です。
javascript
1function no_data() { 2 if(($('form span').length)){ 3 $('form span').html("必須項目を入力してください。"); 4 }else{ 5 $('textarea').after("<span>必須項目を入力してください。</span>"); 6 } 7} 8$(function(){ 9 $('form').submit(function(){ 10 if($('input[name="name"]').val() == '' || $('input[name="email"]').val() == '' || $('textarea').val() == '' || $('textarea').val().match(/^[ \r\n\t]*$/)){ 11 no_data(); 12 return false; 13 }else{ 14 $('form').fadeOut(600,function() { 15 //送信部分 16 var check; 17 check=$(this).serialize(); 18 $.ajax({ 19 url : 'inc/check.php', 20 type : 'post', 21 dataType : 'text', 22 data : check 23 }) 24 //受信部分 25 .done(function(response) { 26 if(response="ok"){ 27 $('form').html("<p>送信が完了いたしました</p>").fadeIn(600); 28 } 29 }) 30 .fail(function() {//エラーが起きた場合 31 alert('通信失敗') 32 }); 33 }); 34 return false; 35 } 36 }); 37});
###こちらがメールの送信する部分のプログラムとなります。
php
1<?php 2function test(array $arr){ 3 $data_box=array('name_box','email_box','tel_box','free_box'); 4 $title_box=array("\n名前\n\t","\nメールアドレス\n\t","\n電話番号\n\t","\nお問い合わせ内容\n\t"); 5 $i=0; 6 foreach($arr as $val){ 7 if($val!=""){ 8 $text_box[$data_box[$i]]=$title_box[$i].htmlspecialchars($val); 9 }else{ 10 $text_box[$data_box[$i]]=""; 11 } 12 ++$i; 13 } 14 mb_language( "ja"); 15 mb_internal_encoding( "UTF-8"); 16 $sub="確認メール"; 17 foreach($text_box as $val){ 18 $body.=$val; 19 } 20 $email=htmlspecialchars($arr["email"]); 21 $body="お問い合わせありがとうございます。".$body."\n上記で送信完了いたしました。"; 22 $from='From:'.mb_encode_mimeheader('私です。').'<送信元メールアドレス\nX-mailer:PHP>'; 23 //送信実行 24 mb_send_mail($email,$sub,$body,$from); 25 $check_box="ok"; 26 return $check_box; 27} 28header('Content-type: application/json'); 29$check_box=test(filter_input_array(INPUT_POST)); 30echo json_encode($check_box);
このプログラムではどういったところに問題があるかといったところをお答えいただけると幸いです。
解決策なども添えていただければ助かります。。。
またこれならこうやった方がいいといったところもあればご教授お願いしたいです。
お手数ですがどうぞ宜しくお願いいたします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/12/27 19:46 編集
2016/12/27 19:57
2016/12/28 06:35