0

連絡先ボックスを機能させようとしていますが、機能します。しかし、誰かが連絡先ページをクリックすると、自動的に空メールが送信されます。どうやってこれを止めるの!?

PHP

<?php $name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$formcontent="From: $name \n Message: $message";
$recipient = "iamtomalmond@gmail.com";
$subject = "Contact Form";
$mailheader = "From: $email \r\n";
mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
echo "Thank You!" . " -" . "<a href='index.html'> Return Home</a>";
?>

HTML

<form action="contact.php" method="POST">
<p>Name</p> <input type="text" name="name">
<p>Email</p> <input type="text" name="email">
<p>Message</p><textarea name="message" rows="6" cols="25"></textarea><br />
<input type="submit" value="Send"><input type="reset" value="Clear">
</form>

前もって感謝します :(

4

3 に答える 3

5

リクエストが行われたかどうかを確認し、そうPOSTである場合にのみメーリング コードを実行する必要があります。

if ($_SERVER['REQUEST_METHOD'] === 'POST')
{
  // your php code (first block in your question)
}
于 2013-03-18T21:52:17.563 に答える
1

$_POSTメールを送信する前に、ページで配列の内容をテストする必要があります。

<?php
   if (!is_empty($_POST)) {
      if (isset($_POST['email']) && isset($_POST['name']) && isset($_POST['message'])) {
          // code to send email as in your question code snippet
      } else {
          // optionally display an error message
      }
   }
 ?>
于 2013-03-18T21:57:17.317 に答える
1

mail()これは、ページの読み込み時に呼び出しているためです。フォームが送信されたときにのみ実行したい場合 (私はそう思います)、$_POSTを呼び出す前に、変数のいくつかが存在するかどうかを確認してくださいmail()

if (isset($_POST['foo']))
{
     //do stuff here
}
于 2013-03-18T21:52:36.457 に答える