1

PHPを使用してPOSTメソッドを介して送信するメール連絡フォームを作成しています。フォームは ../register.shtml にあり、アクションは ../register.php にリダイレクトされます

問題は、register.php を (フォーム経由ではなく) 直接開くと、空のメールが受信トレイに送信されることです。これが起こらないようにする方法はありますか?

ありがとう!

4

4 に答える 4

2

ページのフォームに非表示の入力フィールドを作成します../register.shtml。次に、 onregister.phpで、非表示の入力値が設定されているかどうかを確認します。その場合は、フォームを処理します。設定されていない場合 (ユーザーがフォームから来ていない場合)、元のページにリダイレクトされます。

ここにいくつかのコードがあります:

の上../register.shtml

<form action="register.php" method="POST">

... your form fields

<input type="hidden" name="cameFromForm" value="Yes" />
</form>

すると、一番上に../register.php

if(!isset($_POST['cameFromForm'])) {
    header('location: http://www.example.com/register.shtml');
    exit();
} else {

   .... your send mail code (or whatever register.php does)

}
于 2012-10-17T17:42:39.017 に答える
1

register.php スクリプトで、投稿データに電子メール メッセージがあるかどうかを確認し、何もない場合はフォームにリダイレクトします。

<?php

if (!isset($_POST['message']) || $_POST['message'] == '') {
  header('Location: register.shtml');
  exit;
}

// the rest of your php code here

明らかに、「メッセージ」をフォームの実際のフィールドの 1 つに変更してください。

すべてのフィールド、またはすべての必須フィールドのみをチェックすることもできます。また、リダイレクト URL を変更して、どのフィールドに入力する必要があるかをユーザーに伝えることができます。

于 2012-10-17T17:44:05.010 に答える
1
if ($_SERVER['REQUEST_METHOD'] == "POST") {
    .....
}
于 2012-10-17T17:38:56.270 に答える
0

あなたが探しているものは...

if(!empty($_POST)){
  // send email logic
}

そうすれば、何かがページに投稿された場​​合にのみ電子メールが送信されます。

于 2012-10-17T17:40:47.897 に答える