前提・実現したいこと
画面遷移無しのメールフォームを作ろうとしています。
session_startでWarningが出てしまう原因が分かりません。
どなたか教えてください。
(Dreamweaverを使用)
発生している問題・エラーメッセージ
Warning: session_start(): Cannot start session when headers already sent in index.php on line 3
該当のソースコード
php
1<?php 2 session_start(); 3 $rand = openssl_random_pseudo_bytes(32); 4 $token = bin2hex($rand); 5 $_SESSION['token'] = $token; 6?> 7<html> 8<head> 9<meta charset="utf-8"> 10<title>無題ドキュメント</title> 11</head> 12<body> 13<section id="contact" class="section_contact"> 14 <div class="contact_wrap"> 15 <h3>CONTACT</h3> 16 <form id="contact-form"> 17 <input type="hidden" name="token" value="<?=$token?>"> 18 <label for="i_name">お名前</label> 19 <input type="text" name="name" value="" required> 20 <label for="i_mail">メールアドレス</label> 21 <input type="email" name="email" value="" pattern="[\w\d_-]+@[\w\d_-]+.[\w\d._-]+" title="メールアドレスは、aaa@example.com のような形式で記入してください。" required> 22 <label for="i_message">お問い合わせ内容</label> 23 <textarea name="message" rows="3" cols="50" required></textarea> 24 <input class="send-btn" id="submit" type="submit" value="送信"> 25 </form> 26 <p class="contact-result"></p> 27 </div> 28 </section> 29</body> 30<script> 31 $('#contact-form').submit(function(event){ 32 event.preventDefault(); 33 var $form = $(this); 34 var $button = $('#submit'); 35 $.ajax({ 36 url:"send.php", 37 type:'POST', 38 data: $form.serialize(), 39 timeout:10000, 40 beforeSend: function(xhr, settings) { 41 $button.attr('disabled', true); 42 }, 43 complete: function(xhr, textStatus) { 44 $button.attr('disabled', false); 45 } 46 }).done(function(data, textStatus, jqXHR){ 47 // 成功の場合処理 48 $form[0].reset(); 49 $(".contact-result").text(data); 50 $(".contact-result").slideToggle(200); 51 $(".contact-result").delay(3000).slideToggle(200); 52 }).fail(function(jqXHR, textStatus, errorThrown){ 53 // エラーの場合処理 54 $(".contact-result").text("エラーが発生しました。ステータス:" + jqXHR.status); 55 $(".contact-result").slideToggle(100); 56 $(".contact-result").delay(3000).slideToggle(200); 57 }); 58 }); 59</script> 60</html>
php
1<?php 2session_start(); 3if(isset($_POST["token"]) && $_POST["token"] === $_SESSION['token']){ 4 $name =filter_input(INPUT_POST, 'name',FILTER_SANITIZE_SPECIAL_CHARS); 5 $email = filter_input(INPUT_POST, 'email',FILTER_SANITIZE_EMAIL); 6 $subject = $name.'様からのお問い合わせ'; 7 $message = filter_input(INPUT_POST, 'message',FILTER_SANITIZE_SPECIAL_CHARS); 8 $complete_msg = ''; 9 $to = 'ここに送り先のアドレスを入れる'; 10 $from = '送信元アドレスを入れる'; 11 $headers = "From: ".$from."\r\n"; 12 $message .= "\r\n\r\n".$name."\r\n\r\n".$email; 13 mb_language('Japanese'); 14 mb_internal_encoding("UTF-8"); 15 mb_send_mail($to,$subject,$message,$headers); 16 $complete_msg = '送信されました!'; 17 echo $complete_msg; 18 $name = ''; 19 $email = ''; 20 $subject = ''; 21 $message = ''; 22}else{ 23 echo '不正なリクエストです'; 24} 25?>
BOMありだとエラーが出るとのことで調べてみましたが、Dreamweaverの設定はBOMなしになっていました。
回答1件
あなたの回答
tips
プレビュー