1

単純なPHPmail()関数を使用して、Webサイトからユーザーフィードバックを作成しようとしています。W3の「PHPSecureE-mail」サンプルスクリプトをベースとして使用しています。電子メールの性質上、セキュリティを強化したり、このトピックに関連する他の投稿で提案されているライブラリ(swift mailerなど)を使用したりする必要はありません。

基本フォームがロードされ、[メールの送信]ボタンが選択されると、「サーバーエラー」メッセージと次のサポート情報が表示されます。

「 http://www.examplewebsite/formsuccessful.php?forename=Joe&surname=Blogs&email=j.oe.blogs%40example.co.uk&subject=TEST+2&message=Test+Contentの取得中にウェブサイトでエラーが発生 しました。メンテナンスまたは正しく構成されていません。」

ファイル'formsuccessful.php'ファイルは、サーバーの正しいフォルダーにあります。このタイプのPHPスクリプトを有効にするために見落としている別の設定がない限り、

エラーが発生した場合に備えて、フォームとPHPコードの両方を以下に含めました。

確かに助けていただければ幸いです。私はこれで家の周りを踊りましたが、木から木が見えなくなってしまいました。

乾杯。

PHP:

<?php
function spamcheck($field)
  {
  $field1=filter_var($field, FILTER_SANITIZE_EMAIL);
  if(filter_var($field1, FILTER_VALIDATE_EMAIL))
    {
    return TRUE;
    }
  else
    {
    return FALSE;
    }
  }

if (isset($_REQUEST['email']))
  {

  $mail = $_REQUEST['email'];
  $mailcheck = spamcheck($mail);
  if ($mailcheck==FALSE)
    {
    echo "Invalid input";
    }
  else
    {
    $email = $_REQUEST['email'] ;
    $subject = $_REQUEST['subject'] ;
    $message = $_REQUEST['message'] ;
    $name = $_REQUEST['forename']." ".$_REQUEST['surname'];
    mail("admin@examplewebsite.com", "Subject: "$subject,
    "Message: "$message, "From: "$email," ",$name );
    }
  }
else{
    //reload page with message highlighting error
    }
?>

HTMLフォーム:

<form method="REQUEST" action="formsuccessful.php">
            <fieldset class="master">
            <legend class="master" style="text-align:left;"><b><u>Personal     Details:</u></b></legend>
                <ol class="master">
                    <li class="master"><label class="master"     for"forname">Forename<em class="master">*</em></label><input class="left" type="text"     name="forename" size="30" /></li>
                <li class="master"><label class="master" for"surname">Surname<em class="master">*</em></label><input type="text" name="surname" size="30" /></li>
                <li class="master"><label class="master" for"email">Your Email<em class="master">*</em></label><input type="text" name="email" size="30" /></li>
            </ol>
        <legend class="master" style="text-align: left;"><b><u>Email Contents:</u></b></legend>
            <ol class="master">
                <li class="master"><label class="master" for="subject">Subject:<em class="master">*</em></label><input type="text" name="subject" size="30" /></li>
                <li class="master"><label class="master" for="message">Content:<em class="master">*</em></label><textarea cols="50%" rows="20" onkeyup="checkContent()" name="message" id="message"></textarea></li>
                <li class="master"><input type="submit" value="Send Email" /></li></ol>
        </fieldset>
    </form>

犯罪的に明白なことを私に指摘してもらうために待機しています。

4

3 に答える 3

3

ここにいくつかのエラーがあるようです:

mail("admin@examplewebsite.com", "Subject: "$subject,
  "Message: "$message, "From: "$email," ",$name );

連結する場合は、次のようなものを使用する必要があります。

mail("admin@examplewebsite.com", "Subject: " . $subject,
  "Message: " . $message, "From: " . $email);

また、1つのパラメーターが多すぎます。最後の部分で何をしたいか," ", $nameわかりませんが、最後のパラメーターの有効な入力ではありません。のマニュアルをmail参照してください。

于 2012-09-01T01:15:34.020 に答える
2

フォームはメソッド「REQUEST」を使用していますが、これは正しくありません。GETまたはPOSTである必要があります。一方、@ jeroenがすでに指摘しているmail関数を除いて、使用しているphpコードは正しいようです。

于 2012-09-01T02:03:30.520 に答える
0

フォームメソッドを「投稿」に変更します

また、これで違いが生じるとは思いませんが、フォームアクションで完全なURLを使用してください。

例:form method = "POST" action = "http://www.example.com/path/to/file/formsuccessful.php"

于 2012-09-01T02:07:11.373 に答える