0

ここに初めて投稿します。重複した電子メールを送信している CMS サイトに php 連絡先フォームがあります。問題は断続的です。時には 2 つのコピーを送信することもあれば、8 つのコピーを送信することもあります。正常に動作する場合もあります。この問題は、フォームからいくつかのフィールドを削除した後に始まりました。

フォームは、メールを 3 人の受信者に送信する別のページに送信されます。このページは、ユーザーから送信された情報を表示するサンキュー ページとしても機能します。「お問い合わせいただきありがとうございます。次の情報を受け取りました。」

埋め込みは式エンジン コードです。ご協力いただきありがとうございます!!!

フォームは次のとおりです。

<form id="Form1" name="Form1" method="post" action="http://myprocessingpage.com">
<label for="fname">Name:</label> <input type="text" size="42" id="fname" name="fname"><br>

<label for="email">Email Address:</label> <input size="42" type="text" id="email" name="email"><br>

<label for="telephone">Telephone:</label> <input size="42" type="text" id="telephone" name="telephone"><br>
<br>
<div style="float: left; margin-right: 20px; margin-bottom: 30px;">
<label>How did you hear about us?</label> <br>

<input type="hidden" id="arrayfix" name="how[]" value="">
<input type="checkbox" id="website" name="how[]" value="website"> Website<br>
<input type="checkbox" id="referral" name="how[]" value="referral"> Referral<br>
<input type="checkbox" id="tradeshow" name="how[]" value="tradeshow"> Tradeshow<br>

</div>

<div style="float: left; margin-bottom: 30px;">
<label >Shelter Type:</label><br>

<input type="hidden" id="arrayfix2" name="type[]" value="">
<input type="checkbox" id="safe4x6" name="type[]" value="Safe_Room_4X6"> 4'X6' Shelter<br>
<input type="checkbox" id="safe4x8" name="type[]" value="Safe_Room_4X8"> 4'X8' Shelter<br>
<input type="checkbox" id="custom" name="type[]" value="Custom_Size_Safe_Room"> Custom Size Shelter<br>

</div>

<div style="clear: both;"></div>

<label for="question"> Questions or Comments:</label><br> <textarea rows="7" maxlength="500" name="question" id="question" cols="50"></textarea><br>
<br>

<input type="submit" class="btnimage" id="submit" name="submit" value="">

</form> 

処理ページ ( http://myprocessingpage.com ) は次のとおりです。

<?php
    if (isset($_POST['fname']))
{

?>

<!DOCTYPE html>
<head>
<title>Thank you for contacting us!</title>

{embed="page/headtags"}

</head>

<body>

{embed="page/header"}
{embed="page/drop"}
<div id="contentbg">


    <div id="content">

<?php   
    $name = $_POST['fname'];
    $telephone = $_POST['telephone'];
    $email = $_POST['email'];
    $question = $_POST['question'];

    $howarray = $_POST['how'];
    $howimplode = implode("\n", $howarray);
    $how = str_replace("_", " ", "$howimplode");

    $typearray = $_POST['type'];
    $typeimplode = implode("\n", $typearray);
    $type = str_replace("_", " ", "$typeimplode");


    //sent to us


    $to = "mail1@mail.com, mail2@mail.com, mail3@mail.com";
    $subject = "Info Request";
    $message = "INFO REQUEST:\n\nName: $name\n\nEmail: $email\n\nTelephone: $telephone\n\nHow they heard about us:\n$how\n\nShelter type:\n$type\n\nQuestions or Comments:\n$question";
    $from = "info@mysite.com";
    $headers = "From:" . $from;

    mail($to,$subject,$message,$headers);


?>

<div id="form"> 

<p style="margin-top: 0px; margin-bottom: 40px; color: green; font-weight: bold;">Thank you for contacting us! The following information has been received:</p>
<div style="margin-left: 30px;">
<?php
echo "<p><b>Name:</b> ".$name."</p>";
echo "<p><b>Email:</b> ".$email."</p>";
echo "<p><b>Telephone:</b> ".$telephone."</p>";


$thankshowimplode = implode("</br>", $howarray);
$thankshow = str_replace("_", " ", "$thankshowimplode");

$thankstypeimplode = implode("</br>", $typearray);
$thankstype = str_replace("_", " ", "$thankstypeimplode");

echo "<p><b>How you heard about us:</b></br> ".$thankshow."</p>";
echo "<p><b>Type of shelter(s):</b></br> ".$thankstype."</p>";
echo "<p style='word-wrap:break-word;'><b>Questions or Comments:</b> ".$question."</p>";
?>
</div>

</div>
</div>


{embed="page/footer"}


</body>

</html>

<?php   
} 
else
{
?>

<script type="text/javascript">
window.location = 'http://mycontactpage.com';
</script>

<?php
}
?>
4

1 に答える 1

0

誰かが送信ボタンをダブルクリック (または 8 回クリック) すると、スクリプトが複数回実行される可能性があります。クリック時に送信ボタンを無効にしてみてください (Javascript を使用)。

別のおそらく不必要な解決策は、フォーム スクリプトをロックし (セマフォなどを使用)、提供された情報を使用してデータベース エントリを作成し、同じ情報を最近 (たとえば過去 5 分以内に) 送信したかどうかを確認することです。再度送信しないでください。

JavaScript無効化機能で十分だと思います:)

または、実際に何が起こっているのかを知りたい場合は、「送信された [これらの投稿を区別する可能性のある特定のデータ] を [タイムスタンプ]」 に記録するログ ファイルを作成できます。同じ [distinct info] エントリと非常に近いタイムスタンプを持つこれらのいくつかが表示される場合、問題は送信ボタンを複数回クリックすることです。

于 2014-05-07T01:32:58.240 に答える