0

これら 2 つのコードを連携させることについて質問があります。データを含む電子メールを送信するのではなく、contact.php に移動する空白のページが生成される理由を見つけるのに苦労しました。単に名前、会社名、電子メール。私はphpプログラマーではないので、助けていただければ幸いです。誰かが私を正しい方向に導くことができれば幸いです。

HTML5 サンプル

<form method="post" action="contact.php">
    <fieldset>
        <label for="alerts-name">Your Name</label> 
        <input type="text" name="name" id="alerts-name"  class="input" maxlength="30">
        </fieldset>
        <fieldset>
          <label for="alerts-business">Business Name</label> 
          <input type="text" name="business" id="alerts-business" class="input" maxlength="50">
        </fieldset>
        <fieldset>
          <label for="alerts-email">Your email</label> 
          <input type="text" name="email" id="alerts-email" class="input" maxlength="30">
        </fieldset>
        <label>*What is 2+2? (Anti-spam)</label><br />
        <input name="human" placeholder="Type Here">
        <fieldset>
        <br />
        <fieldset>
          <input type="submit" value="submit">
        </fieldset>
      </form>

以下は、私が使用しているphpコードです。

<?php
  $name = $_POST['name'];
  $business = $_POST['business'];
  $email = $_POST['email'];
  $from = 'From: The Web Site';
  $to = 'myemail@site.com';
  $subject = 'Hello';
  $human = $_POST['human'];
  $body = "From: $name\n business: $business\n email:\n $email";

  if ($_POST['submit'] && $human == '4') {
  if (mail ($to, $name, $business, $email) ) {
  echo '<p>Your message has been sent!</p>';

  } else {
  echo '<p>Something went wrong, go back and try again!</p>';
  }
  } else if ($_POST['submit'] && $human != '4') {
  echo '<p>You answered the anti-spam question incorrectly!</p>';
  }

  ?>
4

2 に答える 2

2

これが「contact.php」ファイルにある PHP コードであることを確認していただけますか? それとも、これらすべてが同じファイルにありますか?

PHP で $subject 変数を使用していません。また、「人間」要素には、おそらくHTML にもtype="text" (またはtype="number" ) 属性が必要です。

電子メールでタスクを実行する場合、PHPMailer 拡張機能を使用することでより多くの成功を収めました。最新バージョンはgithubから入手できます。始めるための良い使用例があります。

また、余談ですが、HTML5 でコーディングしているので、優れた組み込みの検証機能を備えた新しい「メール」タイプの入力を安全に使用できます。

 <input type="email" name="email" id="alerts-email" class="input" maxlength="30">
于 2013-03-21T20:09:15.057 に答える
0

まず、「from」ヘッダーの形式が正しくありません。これは次のいずれかである必要があります。

'From: The Website <the@website.com>';または、これは関数のオプションのパラメーターであるため、単純に除外する必要がありmail()ます。

mail()次に、to、name、business、emailの 4 つのパラメーターを関数に渡します。適切なパラメーターはPHP ドキュメントにリストされています。それらは次のとおりです。

mail (string $to, string $subject, string $message[, string $additional_headers[, string $additional_parameters]]);

この意味で、関数は次のようになります。

mail($to, $subject, $email);

tl;dr:

$businessメール機能の一部として実際にメッセージを含める必要がある場合に使用します。つまり、メール本文がメール ヘッダーとして解釈され、完全に不適切な形式になっています。

于 2013-03-21T20:08:07.420 に答える