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

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

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

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

メール

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

Dreamweaver

Dreamweaverは、アドビシステムズ(株)が開発したWebページ作成ソフトです。 HTMLやXHTMLだけでなく、PHPやASPなどのサイバーサイドスクリプトの編集も可能で、 OracleやMicrosoftSQLServerなどの、データベースとの連携機能もあります。 Webデザイナーなどの専門業界で圧倒的なシェアを誇っているソフトです。

Q&A

解決済

1回答

977閲覧

PHPのsession_startでWarningがでます。なぜか教えてください。

mrn3

総合スコア1

PHP

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

メール

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

Dreamweaver

Dreamweaverは、アドビシステムズ(株)が開発したWebページ作成ソフトです。 HTMLやXHTMLだけでなく、PHPやASPなどのサイバーサイドスクリプトの編集も可能で、 OracleやMicrosoftSQLServerなどの、データベースとの連携機能もあります。 Webデザイナーなどの専門業界で圧倒的なシェアを誇っているソフトです。

0グッド

0クリップ

投稿2021/09/30 03:28

編集2021/09/30 03:33

前提・実現したいこと

画面遷移無しのメールフォームを作ろうとしています。
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なしになっていました。

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

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

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

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

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

itagagaki

2021/09/30 03:36

/home/marumochi/www/m/index.php はどっちですか? 3行目って言ってますけど提示されている2つのPHPコードではどちらもsession_start();は2行目に見えますね。 ちゃんとファイルのど頭から<?php が始まっていますか?
guest

回答1

0

ベストアンサー

line 3

session_startが3行目に存在するということは
「<?PHP」の前に改行が入っているのでは?

投稿2021/09/30 03:38

yambejp

総合スコア116722

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問