PHPを使用してPOSTメソッドを介して送信するメール連絡フォームを作成しています。フォームは ../register.shtml にあり、アクションは ../register.php にリダイレクトされます
問題は、register.php を (フォーム経由ではなく) 直接開くと、空のメールが受信トレイに送信されることです。これが起こらないようにする方法はありますか?
ありがとう!
ページのフォームに非表示の入力フィールドを作成します../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)
}
register.php スクリプトで、投稿データに電子メール メッセージがあるかどうかを確認し、何もない場合はフォームにリダイレクトします。
<?php
if (!isset($_POST['message']) || $_POST['message'] == '') {
header('Location: register.shtml');
exit;
}
// the rest of your php code here
明らかに、「メッセージ」をフォームの実際のフィールドの 1 つに変更してください。
すべてのフィールド、またはすべての必須フィールドのみをチェックすることもできます。また、リダイレクト URL を変更して、どのフィールドに入力する必要があるかをユーザーに伝えることができます。
if ($_SERVER['REQUEST_METHOD'] == "POST") {
.....
}
あなたが探しているものは...
if(!empty($_POST)){
// send email logic
}
そうすれば、何かがページに投稿された場合にのみ電子メールが送信されます。