HTMLの送信ボタンで送信されずコードが表示される

このQ&Aのポイント
  • HTMLのフォームに設定した値がサーバーに送信されず、コードが表示される問題が発生しています。
  • 問題が発生しているHTMLファイルとPHPファイルのコードを参考に、フォームの設定やメールの送信処理について基本的な内容を理解していきたいと思います。
  • また、Microsoft EdgeとInternet Explorerでも同様の問題が発生しているようですので、ブラウザの互換性にも注意が必要です。
回答を見る
  • ベストアンサー

HTMLの送信ボタンで送信されずコードが表示される

HTMLのフォームに設定した値がサーバーに送信されて、 どのように回収するのか基本的なことが まだよく理解できていないのですが、 https://www.sejuku.net/blog/24658 のサイトの情報を参考にして、 下記のコードのファイル(mailform.htmlとmail.php)を作成して、 Microsoft Edge ( Internet Explorerでも同じ) で、 mailform.htmlのファイルを読み込むと、 フォームが表示されるので、 受信者に自分のメールアドレス タイトルにTEST 本文にテスト と入力して送信ボタンを押すと、 私の理解が正しければ、 自分の所にフォームに設定した値(TESTとテスト)のメールが 届くと思われますが、 なぜか、 Edgeの画面には、 mail.phpの中身のコードが表示されてしまいます。 メールも送られてきません。 ./mail.phpの部分をフルパスで指定しても同じです。 なぜでしょうか。 よろしくお願いします。(Windows10,IE,Edge) ---mailform.html------------------------------------------- <html> <head> <meta charset="utf-8" /> <script type="text/javascript" charset="UTF-8"></script> </head> <body> <form action="./mail.php" method="post"> <p>受信者</p><input type="text" name="to"> <p>タイトル</p><input type="text" name="title"> <p>本文</p><textarea name="content" cols="50" rows="5"></textarea> <p><input type="submit" name="send" value="送信"></p> </form> </body> </html> ---mail.php------------------------------------------- <html> <head> <meta charset="utf-8" /> </head> <body> <?php mb_language("Japanese"); mb_internal_encoding("UTF-8"); $to = $_POST['to']; $title = $_POST['title']; $content = $_POST['content']; if(mb_send_mail($to, $title, $content)){ echo "メールを送信しました"; } else { echo "メールの送信に失敗しました"; } ?> </body> </html> -------------------------------------------------------

  • HTML
  • 回答数7
  • ありがとう数7

質問者が選んだベストアンサー

  • ベストアンサー
  • asciiz
  • ベストアンサー率70% (6633/9397)
回答No.6

>忍者ホームページというフリーのホームページ作成サイトに > phpinfo.phpファイルをアップロードしてみましたが >何も表示されませんでした。 やはりそうですよね。 それならば、そのサーバは、PHPに対応していません。 その「忍者ホームページ」では、PHPを使ったWebページを動作させられないのです。 mail.phpが動かないのも当然です。 PHPを使える別のサーバを使ってください。 例えば、こちらのXREAサーバでは、無料プランでもPHPの利用が可能です。 →https://www.xrea.com/

ID_20150222
質問者

お礼

教えて頂きましたXREAサーバの無料プランの利用登録をして アップロードして正しくメールが送られてくることが確認できました。 ありがとうございました。

その他の回答 (6)

  • asciiz
  • ベストアンサー率70% (6633/9397)
回答No.7

「忍者ホームページ」という言葉が出たのでその仕様を見てみました。 >無料ホームページスペース機能比較 >https://www.ninja.co.jp/hp/ こちらの機能一覧でも、忍者ホームページは「CGI・PHP・SSI ×」となっている、つまり、PHPは利用できません、と明記されています。 他のホームページサービスを借りて、phpinfo()で表示が出来るかどうか試し、動いたところであればmail.phpも動かせることが期待できます。

ID_20150222
質問者

お礼

忍者ホームページではできないことが分かりました。 また、その確認の仕方も教えて頂きましてありがとうございました。

  • asciiz
  • ベストアンサー率70% (6633/9397)
回答No.5

まず、以下のphpファイルをサーバに転送し、ブラウザで表示してみてください。 ---- phpinfo.php ---- <?php phpinfo(); ?> ---- ここまで ---- (<html>タグとか何も無しでいいです) PHPミドルウェアがWebサーバにインストールされていれば、PHPミドルウェアがどのようなオプションでインストールされているか、一覧形式で表示されます。 参考画面→ https://webkaru.net/php/function-phpinfo/ もし何も表示されなければ(あるいはソースそのものが表示されるなら)、そのサーバにPHP自体がインストールされていません。 PHPプログラムを動かすことも出来ません。 自分で用意したWebサーバならば、PHPミドルウェアをインストール・利用可能に設定しなければなりませんが、そうでないなら「PHP利用可能」というサーバを契約しなければならないでしょう。

ID_20150222
質問者

お礼

回答ありがとうございます。 まったくの素人でよく分からないのですが、 Webサーバーは、 ホームページを作成するサーバーのことでしょうか。 忍者ホームページというフリーのホームページ作成サイトに phpinfo.phpファイルをアップロードしてみましたが 何も表示されませんでした。 念のため、 mailform.htmlをindex.htmlに変更して (トップはindex.htmlである必要があるため) mail.phpといっしょにアップロードしてみましたが、 index.htmlは正しく表示されますが、 送信ボタンを押すと、 開くか名前を付けて保存の選択となり、開くとエラーに、名前を付けて保存すると、mail.phpファイルの内容が保存されるだけで、本来届くはずのメールは来ませんでした。 忍者ホームページのサイトにPHP対応かどうかを確認中です。 よろしくお願いします。

回答No.4

>メールアドレスなので、おそらく、 >メールサーバーに送られているのではないかと思いますが、 えっと・・・・ そもそもの、考え方が間違っており、 WEBサーバーですよ。 また、今開いてるのもWEBで、この話には、 メールサーバーは元々関係していない事です。 なので、根本的なミスをしていると思われます (というより、100%)

ID_20150222
質問者

お礼

ご指摘の通りでした。 回答者様の回答でいろいろ参考にさせて頂きました。 ありがとうございました。

  • ngwaver
  • ベストアンサー率26% (323/1202)
回答No.3

>mailform.htmlとmail.phpは、 ローカル(PCのHDD)で確認していますが、 PHPが動いているのかどうかがよくわかりません。 PHPが動く環境を用意せずPC上でブラウザで開いているだけならPHPは動きません。まずは環境を用意しましょう。 いきなりメール送信のプログラムを作るのではなく、echoで文字列を表示するなど、簡単なコードで動作確認したほうがいいと思います。

ID_20150222
質問者

お礼

No6の回答様の回答で解決することができました。 ありがとうございました。

回答No.2

そもそも、それPHPサーバーなんですか?

ID_20150222
質問者

お礼

回答ありがとうございます。 メールアドレスなので、おそらく、 メールサーバーに送られているのではないかと思いますが、 よく分からないので、私が契約しているプロバイダーに、 PHPサーバーにも送ることができるのかを、 聞いてみようとしましたところ、 明日まで年始休みということで、 確認することができませんでしたので、 今はよく分からない状況です。 よろしくお願いします。

  • ngwaver
  • ベストアンサー率26% (323/1202)
回答No.1

そのPHPファイルはphpが動く環境に置かれているのでしょうか?

ID_20150222
質問者

お礼

回答ありがとうございます。 よく分からないのですが、 mailform.htmlとmail.phpは、 ローカル(PCのHDD)で確認していますが、 PHPが動いているのかどうかがよくわかりません。 よろしくお願いします。

関連するQ&A

  • 【送信】ボタンが無反応!?

    いつも大変お世話になり誠にありがとうございます。 標記の件。 色々と試みましたが、何も反応しません。 MySQLに登録して、 「送信完了しました。ありがとうございます。」と出したいのですが、何も反応しません。 form.php <body> <div class="v_line_fix"> <h1>Blog K・T</h1> <h2><a href="index.html">トップページ</a></h2> <h2>ブログフォーム</h2> <form method="POST" action="blog_create.php">  ペンネーム<br> <input type="text" name="name" ><br>   ブログタイトル<br>   <input type="text" name="title" ><br>    カテゴリー<br> <input type="text" name="category" ><br> ブログ本文<br> <textarea name="content" id="content" cols="50" rows="80"></textarea><br> <input type="submit" value="確認画面へ"> </form> <p><a href="index.php">戻る</a></p> </body> </html> blog_create.php <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Blog</title> </head> <body> <?php $name = $_POST["name"]; $title = $_POST["title"]; $category = $_POST["category"]; $content = nl2br($_POST["content"]); //$post_at = $_POST["post_at"]; echo "ペンネーム{$name}"; echo "ブログタイトル{$title}"; echo "カテゴリー {$category}"; echo "本文 {$content}"; ?> <hr> <br> <input type="submit" action="/kanryou.php" value="送信する"> </main> </body> kanryou.php <body> <header> <h1>PHP</h1> </header> <main> <h2>登録結果!</h2> <?php <pre> <?php try{ $db = new PDO('mysql:dbname=blog_app;host=localhost;charset=utf8','root'); $count = $db->exec('INSERT blog (id ,name,title ,category ,content , post_at=timestamp()'); ( $_POST['id'] ,mb_substr(0,$name),mb_substr(0,$title),mb_substr(0,$category),mb_substr(0,$content), post_at=timestamp()'); echo $count . "件のデータを登録しました!"; } catch(PDOException $e){ echo 'DB接続エラー' . $e->getMessage(); } ?> </pre> </main> </body> echo "送信完了です。ありがとうございました。"; ?> すみません。 どうしても、無反応です。 困っています。 教えてください。 どうぞ宜しくお願い申し上げます。

    • ベストアンサー
    • MySQL
  • phpでメール送信

    phpでメール送信を行ってもメールが来ません。 普通のメールアドレスです。使っているサーバーはちゃんとphpが つかえるようです。ソースは下記です。訂正するところなどありまし たらよろしくお願いします。 ソース:(ホーム)<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title>sample</title> </head> <body> <form action="1.php" method="post"> ホームページの名前:<br> <input type="text" name="subject" size="30" value=""><br> ホームページのアドレス:<br> <input type="text" name="name" size="30" value=""><br> メールアドレス:<br> <input type="text" name="mail" size="30" value=""><br> ホームページの紹介文:<br> <textarea name="message" cols="30" rows="5"></textarea><br> <br> <input type="submit" value="送信する"> </form> </body> </html> 送信側:<?php mb_language("Japanese"); mb_internal_encoding("SHIFT-JIS"); $message = "ホームページのアドレス:" . $_POST["name"] . "\nホームページの紹介文:" . $_POST["message"]; if (!mb_send_mail("めーるアドレス@メールアドレス.jp", $_POST["subject"], $message, "From: " . $_POST["mail"])) { exit("メールの送信に失敗しました。"); } ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title>sample</title> </head> <body> <p>メールが送信されました。</p> </body> </html>

  • PHP入力フォームから確認画面にいって送信する。という事がやりたいので

    PHP入力フォームから確認画面にいって送信する。という事がやりたいのですが、入力フォームと送信画面は作成できたのですが、その間の確認画面をどう作成したらよいかわからないので、質問致します。 1.入力フォーム(mail.htmlで作成) <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>sample</title> </head> <body> <form action="send.php" method="post"> 件名:<br> <input type="text" name="subject" size="30" value=""><br> 送信者名:<br> <input type="text" name="name" size="30" value=""><br> メールアドレス:<br> <input type="text" name="mail" size="30" value=""><br> 本文:<br> <textarea name="message" cols="30" rows="5"></textarea><br> <br> <input type="submit" value="送信する"> </form> </body> </html> 2.確認画面・・・ここが作成したいページです。 3.送信画面(send.phpで作成) <?php mb_language("Japanese"); mb_internal_encoding("UTF-8"); $message = "名前:" . $_POST["name"] . "\n本文:" . $_POST["message"]; if (!mb_send_mail("hoge@example.com", $_POST["subject"], $message, "From: " . $_POST["mail"])) { exit("メールの送信に失敗しました。"); } ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>sample</title> </head> <body> <p>メールが送信されました。</p> </body> </html> という感じです。 やりたい事としては、第三者に入力フォームに入力してもらい、送信ボタンを押すと、入力内容はこれでよろしいですか?という画面が出て OKならば、そのまま送信。修正したい場合は戻るボタンでmail.htmlに戻り、修正する。その際の戻るボタンを押した場合は 入力した内容が消えていないこと。という事がやりたいのです。 「2.確認画面」のサンプルスクリプトを教えて頂けないでしょうか。 1と3も間違っているならご指摘下さい。よろしくお願い致します。

    • 締切済み
    • PHP
  • PHPメール送信画面(メールフォーム)

    こんにちは!PHPの勉強している学生です。 皆さん、お忙しいところ恐縮ですが、2つのファイル(下記のform.htmlとsend.php)でメール送信画面(メールフォーム)を作っています。大元はググって、無料ソースをコピーして、無料レンタルサーバーの@pageにFFFTP送信して確認致しました。 (1) 結果、送信ボタンを押した後、「メールが送信されました。」と表示はされるのですが、実際にはメールが送られてきません。ちなみに、test@mopera.netの部分に、NTTドコモで契約している自分のメールアドレスを入れました。お恥ずかしながら、A,無料サーバー側の問題なのか?、B,ドコモの設定の問題なのか?、C,メールフォームの問題なのか?分かりません。 ここに関しては、原因やソースコードをご教授頂ければ幸いです。 (2) またPHPのメールフォームでは、そもそもどの様な仕組みでメールが送られるのかが分かりません。 つまり、サーバーでメールを送っているにしても、受信のメールアドレスは何になるのでしょうか? メールフォームで入力した、メールアドレスから送られるのでしょうか? 素人なので検討がつきませんが、より良いソースコード等がありましたらお知らせ下さいませ。 どうぞ宜しくお願い致します。 ■form.html■ <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>sample</title> </head> <body> <form action="send.php" method="post"> 件名(タイトル):<br /> <input type="text" name="subject" size="30" value="" /><br /> 送信者名:<br /> <input type="text" name="name" size="30" value="" /><br /> メールアドレス:<br /> <input type="text" name="mail" size="30" value="" /><br /> 本文:<br /> <textarea name="message" cols="30" rows="5"></textarea><br /> <br /> <input type="submit" value="送信する" /> </form> </body> </html> ■send.php■ <?php $message = "名前:" . $_POST["name"] . "\n本文:" . $_POST["message"]; if (!mb_send_mail("test@mopera.net", $_POST["subject"], $message, "From: " . $_POST["mail"])) { exit("error"); } ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>sample</title> </head> <body> <p>メールが送信されました。</p> <p><a href="top.html">戻る</a></p> </body> </html>

    • ベストアンサー
    • PHP
  • メール送信できない

    PHPでメールが送信できなくて困っています。 自分なりに下記のプログラムを書いてみたのですが $furiganaや$nameに何か文字や数字を入れても結果として ===送信されたメールの内容===== メール内容 [ふりがな] $furigana [名前] $name [内容]$naiyou ============ という形、つまり変数がそのまま変数名として メールに送られてしまいます。 変数に特定のフォームから取得した内容を 入れたい場合どのように記載すれば いいのでしょうか? お時間がある方、大変恐れ入りますが お教えいただければ幸いです。 <?php $furigana = $_POST['furigana']; $name = $_POST['name']; $naiyou = $_POST['naiyou']; // 準備 $mlfr = '111@domain.jp'; $mlto = '111@domein.jp'; $mlsb = 'メール'; $mlms = 'メール内容' . "\n"; $mlms = $mlms . '[ふりがな]$furigana ' . "\n"; $mlms = $mlms . '[名前]$name ' . "\n"; $mlms = $mlms . '[内容]$naiyou' . "\n"; $jcph = '.'; // メール送信 $rcd = mb_send_mail($mlto, $mlsb, $mlms, $mlfr); ?> <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=EUC-JP"> <TITLE>メール送信テスト</TITLE> </HEAD> <BODY> <P align="center">▼ メール送信テスト ▼</P> <HR> <DIV> <?php if ($rcd) { print "<P>メール送信完了</P>"; } else { print "<P>メール送信エラー</P>"; } ?> </DIV> <HR> </BODY> </HTML>

    • ベストアンサー
    • PHP
  • PHPについて教えてください

    下記のindex.htmlとcheck.phpを別々にURLに入力すると正しく表示されるのですが 横の送信ボタンを押したときにcheck.phpにジャンプしてくれません どうしてでしょうか? index.html <DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>PHP基礎</title> </head> <body> <from method="post" action="check.php"> <input name="nickname" type="text" style="width:100px"> <input type="submit" value="送信"> </from> </body> </html> check.php <DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>PHP基礎</title> </head> <body> <?php print'ようこそ'; ?> </body> </html>

    • 締切済み
    • PHP
  • phpメール送信

    <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-S"> <title>お問い合わせフォーム</title> </head> <body> <?php //お問い合わせタイトル、詳細のセット $title = htmlspecialchars($_POST['title'], ENT_QUOTES); $message = htmlspecialchars($_POST['message'], ENT_QUOTES); mb_language('ja'); mb_internal_encoding('UTFS'); $name = '自動送信’; $email = '<僕のアドレス>'; $header = 'From: '. mb_encode_mimeheader($name) . '<' . $email .'>'; $result = mb_send_mail("<僕のアドレス>", $title, $message, $header); if ($result){  echo '■お問い合わせ内容を担当者に送信しました。’; } else {  echo '■担当者への送信に失敗しました。'; } ?> </body> </html> 何故かエラーになります。原因を教えてください

    • ベストアンサー
    • PHP
  • HTMLの生成について

    PC画面のTEXTAREAに入力した内容で 携帯用(3キャリア対応)の画面を作成したいです。 一応、それっぽいファイル(HTML)を作成するところまでできました。 こんな感じで問題ないでしょうか? 注意すべき点などありましたら教えてください。 よろしくお願いします。 【test.php】 <? //ファイルの保存場所 $path = "./htmlfile/info/"; //ファイル名称 $name = date("YmdHis").".html"; $head = "<meta http-equiv='Content-Type' content='text/html; charset=shift_jis'>"; if($_POST){ $detail = nl2br(mb_convert_encoding($_POST["detail"], "SJIS", "UTF-8")); $html = <<<HTMLFILE <html><head>$head</head><body><div>$detail</div></body></html> HTMLFILE; //ファイル作成 $filename=$path.$name; touch($filename); //ファイルオープン $fp = fopen($filename,"w"); //ファイル書込み fwrite($fp,$html); //ファイルクローズ fclose($fp); } ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>ファイル生成</title> <body> <table align = "center" cellspacing="0"> <form name="form1" action="test.php" method="post"> <tr> <b>携帯サイト内容</b><br> <textarea cols="20" rows="10" name="detail"><?= $_POST["detail"] ?></textarea> </tr> <tr> <input type="submit" name="con" value="ファイル生成"> </tr> </form> </table> </body> </html>

    • ベストアンサー
    • PHP
  • POSTされた値をEUCで表示したい

    <?php echo '<html><head> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis"> </head> <body> <form action="test2.php" method="POST"> <input name="str1" value="テストです"> <input type="submit"> </form> </body></html>'; exit; } ?> こうして送信されたデータは <?php echo '<html><head> <meta http-equiv="Content-Type" content="text/html; charset=Shift-JIS"> </head><body>'; echo $_POST['str1']; ・・・・・ として表示しますが、このままのテストソースではSJISで普通に表示されますが、EUCで表示するにはWindowsの中のphp.iniを編集すればよいと思います。 どのようにすればよいですか? test2.phpが・ニ・ケ・ネ、ヌ、ケと表示したら成功です。

    • 締切済み
    • PHP
  • メール送信のPHPの件で

    現在、 <?php //HTML内容出力 echo "<html>"; echo "<head>"; echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">"; echo "<title>メールフォーム(送信処理)</title>"; echo "</head>"; echo "<body>"; //文字コード設定 mb_language("ja"); mb_internal_encoding("utf-8"); //*環境設定************************************* //件名 $subject = "お問い合わせがありました"; //管理人メールアドレス(宛先) $to = "○○@gmail.com"; //********************************************** //**POSTデータ受け取り************************** //差出人メールアドレス格納 $header = "From: ". $_POST['email']; //本文格納 $body = "■お名前:" . $_POST['name'] ."\n"; $body .= "■内容:" . $_POST['message'] ."\n"; //************************************************ if(mb_send_mail($to,$subject,$body,$header)){ echo "メール送信しました。"; }else{ echo "メール送信失敗しました。"; } //HTML内容出力 echo "</body>"; echo "</html>"; ?> こういう感じでメール送信フォームのPHPを正常稼働させているのですが、 これに送信者への確認メールを送信するには、どのように追記すればよろしいでしょうか? よろしくご教授の方、お願いいたします。

    • 締切済み
    • PHP

専門家に質問してみよう