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

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

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

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

MAMP

Mac 上で WordPress などの動的ページのサイトが作れるように環境を構築するフリーソフト

Q&A

解決済

5回答

771閲覧

お問い合わせフォームの作成について

org

総合スコア6

PHP

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

MAMP

Mac 上で WordPress などの動的ページのサイトが作れるように環境を構築するフリーソフト

1グッド

2クリップ

投稿2020/01/18 18:50

お問い合わせフォームをphpで作成しようと思い、(webサイト)を参考に作成していたのですが、
送信ボタンを押すと、以下のようにphpのファイル内が表示され、どのように対処すれば良いか困っています。解決策をお教えいただけますでしょうか。
PCは、Macを利用しており、chromeで開いております。

bug

ファイルはローカルで開いており、MAMP起動させながら動かしてみたりしたのですが、結果は変わりませんでした。以下ファイル3つと、意図せず表示されているphpファイルの状態です。

html

1--/index.html-- 2 3<!DOCTYPE html> 4<head> 5 <meta charset="UTF-8"> 6</head> 7<body> 8 9 <form action="confirmation.php" method="post"> 10 <div> 11 <p>名前</p> 12 <p><input type="text" name="name"/></p> 13 </div> 14 <div> 15 <p>メールアドレス</p> 16 <p><input type="email" name="mail"/></p> 17 </div> 18 <div> 19 <p>題名</p> 20 <p><input type="text" name="subject"/></p> 21 </div> 22 <div> 23 <p>お問い合せ内容</p> 24 <textarea name="content"></textarea> 25 </div> 26 <input type="submit" value="送信"/> 27 </form> 28 29</body> 30</html>

php

1--/confirmation.php-- 2 3<!DOCTYPE html> 4<head> 5 <meta charset="UTF-8"> 6</head> 7<body> 8 9<form action="mail.php" method="post"> 10 <h2>確認画面</h2> 11 <table border="1"> 12 <tr> 13 <td>名前</td> 14 <td><?php echo $_POST["name"]; ?></td> 15 </tr> 16 <tr> 17 <td>メールアドレス</td> 18 <td><?php echo $_POST["mail"]; ?></td> 19 </tr> 20 <tr> 21 <td>題名</td> 22 <td><?php echo $_POST["subject"]; ?></td> 23 </tr> 24 <tr> 25 <td>問い合わせ内容</td> 26 <td><?php echo $_POST["content"]; ?></td> 27 </tr> 28 </table> 29 <input type="submit" value="送信"/> 30 <a href="index.html">戻る</a> 31 </form> 32 <!-- POSTの中身をSESSIONへ受け渡す --> 33 <?php 34 session_start() ; 35 $_SESSION["name"] = $_POST["name"]; 36 $_SESSION["mail"] = $_POST["mail"]; 37 $_SESSION["subject"] = $_POST["subject"]; 38 $_SESSION["content"] = $_POST["content"]; 39 ?> 40</body> 41</html>

php

1--/mail.php-- 2 3<!DOCTYPE html> 4<head> 5 <meta charset="UTF-8"> 6</head> 7<body> 8 9<?php 10 mb_language("Japanese"); 11 mb_internal_encoding("UTF-8"); 12 session_start(); 13 $to = /*宛先のメールアドレス*/; 14 $subject = htmlspecialchars($_SESSION['subject']); 15 $name = htmlspecialchars($_SESSION['name']); 16 $mail = htmlspecialchars($_SESSION['mail']); 17 $content = htmlspecialchars($_SESSION['content']); 18 $header = "From:$mail"; 19 $body = "お名前"."\n"."$name"."\n\n" 20 ."メールアドレス"."\n"."$mail"."\n\n" 21 ."題名"."\n"."$subject"."\n\n" 22 ."お問い合わせ内容"."\n"."$content"."\n\n"; 23 ?> 24 <?php if((mb_send_mail($to,$subject,$body,$header))) : ?> 25 <p >メールの送信が完了しました</p> 26 <?php else : ?> 27 <p>メールの送信が失敗しました</p> 28 <?php endif ; ?> 29 <a href="index.html">戻る</a> 30 31</body> 32</html>

ミニマムで作成している為、css効かせてないです、申し訳ありません。
ご回答、よろしくお願い申し上げます。

unite8000👍を押しています

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

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

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

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

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

TomoakiNagahara

2020/01/21 01:49

ブラウザの実行結果をURLが見える形でスクリーンショットを撮りましょう。 Webプログラムにおいて、URLはデバッグに一番重要な情報です。
guest

回答5

0

珍しい現象ですね。

<!DOCTYPE html>
がブラウザに解釈されていないです。

普通は php が動作しない環境でも
イメージ説明

と表示されます。(ヘッダは html として適切に処理され、php 部分も html と解釈され表示されます。)

ブラウザが、html として解釈していないので、コードの拡張子が適切なものになっていないのでは無いかと思います。

例えば、拡張子が全角になっているとか、.txtになってるとか。etc...
ただ、コードを見る限り、そんなこともないんですよねぇ^^;

アドレスバーに表示されている URL(?) を質問に追記してもらえるとより回答がつきやすくなるかも知れません。

後、リンク先のコードはデキが悪いので参考にしないほうが良いです。
また、お問合せフォームも、学習用途に向いた教材では無いです。

参考:「ググれ」って言われてググるな!【初学者べからず集 その1】

無難に掲示板から始めるのをおすすめします。

#追記
chrome で.phpであっても html として解釈され無いことを確認しました。
Firefox では依然として画像のように表示されますが、ミスリードとなり申し訳ありません。

以前は、html と解釈されていたはずなので、いずれかのバージョンで変更が入ったものだと思います。
php が動作していない場合、chrome では私の回答にある画像のようには、ならないです

投稿2020/01/19 04:01

編集2020/01/19 10:20
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

org

2020/01/19 09:46

ご回答ありがとうございます。 全角等のcheckは行いましたが、正常でした。 addressに関しては、以下で表示しております。 http://localhost/hhh/index.html
org

2020/01/19 09:47

後、リンク先のコードはデキが悪いので参考にしないほうが良いです。 >確認いたしました。助言いただき、ありがとうございます。
退会済みユーザー

退会済みユーザー

2020/01/19 10:23 編集

回答に追記しましたが、私の環境(Firefox)と chrome で表示に差異が発生することを確認しました。 本回答は、ミスリードですね^^; 大変申し訳無い。追記をご確認ください。
org

2020/01/19 10:27

追記/ご回答ありがとうございます。 差異発生、理解いたしました。 firefox/safali等で試してみます!
退会済みユーザー

退会済みユーザー

2020/01/19 10:33

いや、試さなくていいですよ。本題と関係ないし、一般的に役に立つ情報でもない。 トラブルシュートに極稀に役立つだけだから。 こっちの質問は役に立つかも。 ブラウザの解釈【<? php】は【<!--? php】となぜ変換されるか? https://teratail.com/questions/60492 この質問した時点では、.php は html として解釈されてたんですよね。。。
org

2020/01/19 10:50

なるほどです。参考サイトありがとうございます、確認してみます!
TomoakiNagahara

2020/01/21 01:43

> 珍しい現象ですね。 > <!DOCTYPE html> > がブラウザに解釈されていないです。 全然関係ないです。PHPはサーバー側で実行され、実行結果が送信されてきます。 この回答に高評価ボタンを押している人は誰ですか?名乗り出て下さい。
TomoakiNagahara

2020/01/21 01:45

> chrome で.phpであっても html として解釈され無いことを確認しました。 全然関係ないです。 content-typeとかmimeとかググってみて下さい。 htmlヘッダーとhttpヘッダーの違いについても理解しましょう。
TomoakiNagahara

2020/01/21 01:46

低評価ボタンを押しておきました。
退会済みユーザー

退会済みユーザー

2020/01/21 02:28

> TomoakiNagahara さん 本件は php タグがそのまま表示されていることから、php が正しく動いていないことが想定されるので、そもそも「PHPはサーバー側で実行され」というコメントは理解が足りていません。 本回答は、サーバサイドで html が適切に生成されない場合を想定しており、原因は主に「Web サーバを通っていない」か「Web サーバが php を処理していない」です。 前者はファイルをブラウザで直接開く(ダブルクリックやドラッグ/ドロップ等)ことで発生し、当然 http 通信は発生せず、file:// としてブラウザに表示の挙動が任されます。 そのため、http 通信とは無関係で、指摘事項は的外れです。 追記に書いたとおり、file:// で開いたときのブラウザの挙動に差があり、質問には当初から Chrome を使用していることを明記されているので、本回答はミスリードになっています。 *以前は、Chrome と Firefox で挙動に大きな差がなかったため、確認に手を抜いた私のミスです。 本件は後者である可能性が高く MAMP で php が適切に処理を行えてないことが原因と思われますが、私は MAMP 環境に詳しくないので、コレ以上は切り分けの手伝いができません。 MAMP に詳しいようであれば、切り分けを手伝ってあげてください。
guest

0

一番最初のindex.htmlをファイルをダブルクリックで開いてるんじゃないですか?phpを表示するには最初がhtmlであっても、必ずアドレスバーには手動でパスを入力しないとダメなのですが。
パスはhtdocsまでをlocalhostとして、それより下は自分で作成してるものを入れてください。

投稿2020/01/18 21:25

mari.rinn

総合スコア296

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

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

org

2020/01/19 09:46

ご回答ありがとうございます。 ご回答頂いた通り、htdocs下にhhhファイルを作成、の下にindex.html他を配置して実行してみましたが、errorが返ってきてしまいましたが、何が間違っているでしょうか? 実際に表示したのが以下です。 http://localhost/hhh/index.html ちなみに、localhostのみの場合、It works!が返ってきます。 そして、MAMPのpreference設定ですが、portの部分を80/80/3306で設定しており、webserverをapacheで設定しております。 お手隙の際に、ご回答よろしくお願い申し上げます。 表示の際に出るerrorは以下です。 The requested URL /hhh/index.html was not found on this server.
mari.rinn

2020/01/19 12:17 編集

localhost でIt worksと出たということは、サーバーには正常に接続出来ているということですね。 ディレクトリの確認ですが、 >hhhファイルを作成  これはフォルダですよね?つまり htdocsフォルダの直下にhhhという名前のフォルダを置いて、その中にindex.htmlやphpのファイルも一緒に置いた ということで良いですね? で、基本的な質問なのですが、 この問い合わせフォームをやるより前に、とりあえずphpが正常に作動するかの「hello world」とかの簡単なテキスト入力をして、それをブラウザで確認することはやってみられましたか? ちなみに >The requested URL /hhh/index.html was not found on this server. urlが見つからないといっているので、パスが違う、あるいは、ファイルかフォルダの名前が違うとか、もう1度よく確認してみて下さい。
org

2020/01/19 12:20

>これはフォルダですよね?つまり 申し訳ございません、誤字です。その認識であっております。 htdocs直下にindex.phpを配置して --index.php-- <?php print (‘success!’) ?> を表示させてみましたが、失敗してしまい、 ///このページは動作していませんlocalhost では現在このリクエストを処理できません。 HTTP ERROR 500/// のerrorが出ました。 ブラウザはChromeを用い、(http://localhost/index.php)で表示しております。
mari.rinn

2020/01/21 23:28 編集

>print (‘success!’) これは最後の ; が抜けてますが、実際には書いてますか? 正 print('success!');
m.ts10806

2020/01/21 13:35

‘ ←これシングルクォーテーションになってませんしね。
mari.rinn

2020/01/21 23:30

m.ts10806様 ご指摘ありがとうございます。気づかなくてすみませんでした。 編集で直しました。 いつもお世話になりありがとうございます。
guest

0

Macで実行しているそうですが、バージョンはいくつですか?
MAMPのApacheではなく、Macでデフォルトで入っているApacheが動作している可能性はありませんか?
Macでデフォルトで入っているApacheは、PHPモジュールがロードされていない可能性があります。
ドキュメントルート(htdocsがあるパス)も記載してみて下さい。

投稿2020/01/21 01:54

TomoakiNagahara

総合スコア108

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

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

0

ベストアンサー

いえいえ。どういたしまして。
MacにPHPは、最初から入っています。
でも、PHPは、サーバーのソフトApacheなどが、必要です。
そのため、Macの場合は、PHPの開発環境で、MAMPがあります。

今回の原因は、私の推測です。
PHPで作られたアプリを動かすためのサーバーが無いので、PHPファイルを起動できなった。
PHPが動いていないため、PHPファイルの拡張子のPHPをブラウザが認識できなかった。

Chromeなどのブラウザは、ファイルの拡張子がHTMLやHTMをウェブページと解釈して表示します。
今回、HTMLページで表示されているフォームの送信ボタンを押して、指定のファイルを表示しようとした時、PHPが動いていない状態。
そのためサーバーからHTMLのデータをもらえず、テキストファイルとして内容をそのまま表示してしまったと思われます。

先に回答している方がご指摘されているように、

<!DOCTYPE html>

がChromeで解釈されていないのは、ファイルの拡張子がPHPのため、ChromeがHTMLと認識しなかったので、意図した通り表示されなかったと思われます。

イメージ説明
私もMacですが、Apacheを起動してPHPを使えるようにしていない状態では、拡張子がPHPだとテキストファイルとして、中身がそのまま表示されます。

PHPを使ったメールフォームのような簡単なアプリでも、サーバーを起動してテストしてください。
PHPは、パソコンなどのクライアントでは動かないプログラミング言語です。
Apacheなどサーバーを、セットで使うようにしてみてください。

MAXPのwwwフォルダの直下に、今回のファイルを配置して、テストしてみてください。

投稿2020/01/19 07:28

creator.M

総合スコア80

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

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

org

2020/01/19 09:55

詳細説明ありがとうございます。 私もMasaruKumazaki様の推測が要因で間違い無いと思い、その線で進めていたのですが、 //MAXPのwwwフォルダの直下に、今回のファイルを配置して、テストしてみてください。 >このwwwフォルダが見つからず、困っております。ご教授いただけないでしょうか?
creator.M

2020/01/19 14:04

大変申し訳ございません。 MAMPのウェブサーバーのドキュメントの場所は、 /Applications/MAMP/htdocs です。 Apacheのサーバー設定などは、大丈夫でしょうか?
guest

0

はじめまして。
PHPで作られていますが、MAcでPHPは、どのようにインストールして、開発環境を作って見えますか?

PHPのソースコードが、テキストファイルとして表示されているような気がします。

投稿2020/01/19 01:28

creator.M

総合スコア80

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

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

org

2020/01/19 03:44

ご返信ありがとうございます。 調べたところ、Macには標準で環境が整っていると書いていたので、試しにコンソールで下記を入力 php -v したところ、php7〜と表示されたので問題ないのかな、とは思いましたが、念の為にMAMPというものもインストールして起動してみた といった状況です。 開発環境とは、MAMPとは、をしっかりと理解しきれていないのが問題なのでしょうか。、
TomoakiNagahara

2020/01/21 01:59

低評価ボタンを押しました。 【低評価の理由を明確に伝え、適切な回答に修正してもらいましょう】 と表示されたので理由を書きます。 まず、スペルや日本語がおかしいです。正しくありません。 > PHPのソースコードが、テキストファイルとして表示されているような気がします。 気がするではなく、明確に確認すべきです。 HTTPレスポンスのMIMEをチェックすることをアドバイスするのが良いのでは。 HTTPレスポンスやMIMEについて分からなければググって下さい。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問