1

ユーザーが連絡先情報を送信して連絡を取るためのhtmlフォームがあります。このすべてを でライブにしたいindex.htmlのですが、フォルダーに別のファイルを作成する必要があることに反対しません。

<form class="row" method="post" action="contact.php">
    <div class="col-md-12">
        <div class="form-group">
            <input type="text" class="form-control" placeholder="Your Full Name">
        </div>
        <div class="form-group">
            <input type="text" class="form-control" placeholder="Phone Number*">
        </div>
        <div class="form-group">
            <input type="text" class="form-control" placeholder="Email Address*">
        </div>
        <div class="form-group">
            <input type="text" class="form-control" placeholder="Company Name*">
        </div>
        <div class="form-group">
            <textarea class="form-control lg_textarea" placeholder="Questions / comments"></textarea>
        </div>
    </div>

    <div class="buttn_outer">
        <button type="submit" class="btn signin_btn col-sm-5 clearfix" style="margin:0 0 0 4%; float: left;">Submit</button>
    </div>
</form>

サーバーマシンにphpをインストールしました。他の例を見ると、次のようにphpスクリプトを使用しようとしていることがわかりました。

<?php

if($_POST["submit"]) {
    $recipient = "me@me.com";
    $subject = "Some Message subject";
    $sender = $_POST["sender"];
    $senderEmail = $_POST["senderEmail"];
    $message = $_POST["message"];

    $mailBody = "Name: ".$sender."\nEmail: ".$senderEmail."\n\n".$message;

    mail($recipient, $subject, $mailBody, "From: ".$sender." <".$senderemail.">");
    $thankYou = "<p>Thank you! Your message has been sent.</p>";
}
?>

現在、成功メッセージに送られますが、メールには何も送られません。私はphpに非常に慣れていません。ヘルプ/アドバイスをいただければ幸いです。

4

3 に答える 3

2

どの入力フィールドにも name 属性がありません。

<input type="text" class="form-control" placeholder="Email Address*">
<input type="text" class="form-control" placeholder="Your Full Name">
<textarea class="form-control lg_textarea" placeholder="Questions / comments"></textarea>

する必要があります

<input type="text" class="form-control" name="senderEmail" placeholder="Email Address*">
<input type="text" class="form-control" name="sender" placeholder="Your Full Name">
<textarea class="form-control lg_textarea" name="message" placeholder="Questions / comments"></textarea>

基本的に、入力フィールドの name 属性は$_POSTキーと一致する必要があります。

したがって、次の<input name="name" />ように処理されます$_POST['name']

また、変数$recipient$senderEmail変数を混同しているようです。PHP のメール関数は、最初のパラメーターが受信者であることを指定します。me@me.comこれは明らかに実際のメールではないことを理解しています。ただし、受信者は、フォームで送信したユーザーの電子メールである必要があります。フォームを送信せずにテストしてメール機能が機能することを確認し、機能する場合は、フォーム変数で機能するようにしてください。

于 2014-10-08T03:47:03.520 に答える
0

他のもの、私は投げ込みます

($_POST["submit"]) に変更する必要があります

!empty($_POST["submit"]) - また - isset($_POST["submit"])

変数が設定されていると想定しないでください。設定されているかどうかを確認するまで (または自分で初期化するまで)、変数に対してテストを実行したり、その値を使用したりしないでください。

PHP 構成によっては、その行が失敗する可能性があります。そのため、contact.php ページを別のサーバーに移動すると、エラーでクラッシュする可能性があります。

Lance が述べたように、サーバーに返したいすべてのフォーム フィールドには name 属性が必要です。$_POSTこれは、サーバーに渡されるときに配列にリンクするものです。

また、ユーザーの電子メールを差出人アドレスとして使用することもできます。ただし、そのユーザーのドメインの電子メール サーバーから送信されたものではないことを受信サーバーが確認すると、その電子メールはスパムとしてフラグ付けされる可能性があります。サーバーの電子メール設定をいじる必要があるため、「なりすまし」をしようとしている場合は、正当な送信元アドレスとして認証します (サーバーのデフォルトを使用しないこともできます)。

デフォルトの差出人アドレス (または返信先アドレス) を上書きしたい場合は、ヘッダー フィールドでそれを行う必要があります (これをグーグルで検索してオプションを確認できます)。

HTML に HTML タグまたは要素を含めたい場合は、mail 関数の headers パラメータでこれを示す必要もあります。あなたがしているように、単純な警告メールの場合-私はプレーンテキストを使用し、改行を使用します( のように\n)。 のようなアイテムは使用しません<p></p>

于 2014-10-08T04:01:56.450 に答える