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

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

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

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

Q&A

解決済

2回答

2476閲覧

HTML内のフォームについて

konishijin

総合スコア25

PHP

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

0グッド

1クリップ

投稿2016/04/21 00:45

編集2016/04/21 01:05

index.htmlの下部に記載しているformタグ(お問い合わせフォーム)です。さくらサーバーを使用しています。

<form action="mail.php" method="post" class="form-all" role="form"> <div class="form-group"> <label for="exampleInputName1">お名前</label> <input type="text" class="form-control" id="exampleInputName1" placeholder=" name" name="name" required> <label for="exampleInputEmail1">メール</label> <input type="email" class="form-control" id="exampleInputEmail1" placeholder=" email" name="email" required> <label for="exampleInputText1">内容</label> <textarea class="form-control" rows="3" name="message" required></textarea> </div> <button type="submit" value="SEND MESSAGE" class="btn btn-default">送信</button> </form>

これがindex.htmlです。
mail.phpは

<?php if($_server['request_method']=== 'post'){ $name = $_post['name']; $email = $_post['email']; $message = $_post['message']; header('Location:thanks.html'); exit; } ?>

をmail.phpファイルで作っていますが、これで送信すればメールは届くのでしょうか?何かサーバー側で設定など必要なのでしょうか?
そして、mail.phpというように別ファイルではなくindex.htmlの1つのファイルないで完結はできなのでしょうか?できるけれどもしない方がよいのでしょうか?

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

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

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

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

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

guest

回答2

0

ベストアンサー

mail.phpでやっていることは、お問い合わせフォームで入力された値を受け取り、
それぞれ変数に格納して(といっても使用してないみたいですが...)thanks.htmlにリダイレクトしているだけです。恐らくお問い合わせありがとうございます、的な画面ですよね。

PHPでメールを送信する場合、いくつか方法があります。

  1. PHPの関数を使う

mail関数やmb_sendmail関数等が使えます。
この場合sendmailというメールサーバ用のソフトウェアがインストールされている必要があります。
さくらサーバの場合は事前にインストールされているかもしれません。
0. メール送信ライブラリを使う
mail関数やmb_sendmailはsendmailを利用しているので、sendmail自体の設定が正しくなければうまく送信できなかったり、スパム判定されたりします。
わざわざ自前でメールサーバを用意する必要がないのであれば、外部のメールサーバ(例えば、GmailのSMTPサーバ)を利用するのも手です。
この場合、メール送信ライブラリを利用するのが手っ取り早いでしょう。
packagistで探してみると
https://packagist.org/search/?q=mail
上記のように様々なライブラリが公開されていることがわかります。

「php メール 送信 ライブラリ」等でググると日本語の情報もたくさん出てきますので、チャレンジしてみてください。
ちなみにsendmailを利用する場合でも外部のメールサーバを指定することはできますが、php.iniを弄ったりする必要があるので2.をおすすめします。

mail.phpというように別ファイルではなくindex.htmlの1つのファイルないで完結はできなのでしょうか?

phpはhtml内にコードを埋め込むことができるので可能ですが、今回のケースだと
「問い合わせフォームを表示する」htmlファイルと、「送信された値を受け取り、処理を行う」phpファイルという具合に役割を分けられているので、同一ファイルにするメリットは少ないかと思います。
学習が進めばそのうち表示部分とロジック部分が同一ファイルに書かれてキモチワルイ!別ファイルに分離したい!と思うようになります。
もしindex.html内に埋め込むのであれば、index.phpにリネームしましょう。

ついでに補足しますと、
$_SERVER$_POSTスーパーグローバル変数と言い、最初から定義されている変数です。
大事なことですがPHPの変数は大文字と小文字を区別します。
つまり$_POST$_postと書くのは間違いです。

投稿2016/04/21 02:38

編集2016/04/21 03:23
romiogaku

総合スコア546

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

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

0

$name $email $message
の3つはどこかで使用していますか?

Googleで「PHP mail送信」と検索すると「PHP - メールを送信する」というページが1つ目に出てきます。一読することをお勧めします。

投稿2016/04/21 01:29

tonarino210

総合スコア228

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

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

konishijin

2016/04/21 01:37

ご返答ありがとうございます。form内でnameで使用しています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問