2

ユーザーは HTML フォームに登録データを入力し、それを PHP ページに送信して POST データを処理します。約 20% の確率で、ユーザーが [送信] をクリックすると、POST データは空になります。Fiddler を使用したいくつかの調査では、適切に動作する場合に次のことが示されています。

58  200 HTTP    www.awebsite.com    /?page_id=337   22,433  no-cache, must-revalidate, max-age=0; Expires: Wed, 11 Jan 1984 05:00:00 GMT    text/html; charset=UTF-8    firefox:9116                    

それが壊れたとき、私はこれを見ます:

56  200 HTTP    www.awebsite.com    /?page_id=337   144 no-store, no-cache, must-revalidate, post-check=0, pre-check=0; Expires: Sat, 6 May 1995 12:00:00 GMT       firefox:9116            
57  200 HTTP    www.awebsite.com    /?page_id=337   144 no-store, no-cache, must-revalidate, post-check=0, pre-check=0; Expires: Sat, 6 May 1995 12:00:00 GMT       firefox:9116            
58  302 HTTP    www.awebsite.com    /?page_id=337   16,561  no-cache, must-revalidate, max-age=0; Expires: Wed, 11 Jan 1984 05:00:00 GMT    text/html; charset=UTF-8    firefox:9116            
59  200 HTTP    www.awebsite.com    /?page_id=445   19,989  no-cache, must-revalidate, max-age=0; Expires: Wed, 11 Jan 1984 05:00:00 GMT    text/html; charset=UTF-8    firefox:9116    

提出がページを3回提出しているようなものです。ところで、HTML および PHP ページは WordPress ウェブサイトの一部です...それが密接な関係があるかどうかはわかりませんが、できるだけ多くの情報を含めたいと考えていました。

何が起こっているかについて何か考えはありますか?私はイベントバブリングの罪を犯していますか? それが必要でない場合は場所を散らかしたくありませんでした。

コメントに応じて編集: まず、フォーマットを作成してくれた FDinoff に感謝します。8^)

順番に:

@3dgoo: 送信を 1 回だけクリックするように注意したので、それは問題ではないと思います。だったらいいのに!

@jereon: 断続的です。PITA ですが、ページを 4 ~ 5 回送信することで実現できます。実現するでしょう。

@Eduardo: うん、@meewoK への返信でわかるように、それは私がやっていることのほとんどです。

@meewoK: あなたの願いは私の命令です! 私のHTMLのフォームタグは次のとおりです。

<form  class="contact_form" action="/?page_id=337" method="post" name="contact_form" onsubmit="return validateForm();">

validateForm()true が返されると仮定すると、POST データは PHP を使用して構築された WordPress ページに送信されます。それはpage_id=337です。そのファイルの上位 20 行ほどを次に示します。

<?php
/*
Template Name: DisplaySummaryToApplicant.php
*/
?>

<?php
$ipaddress = $_SERVER["REMOTE_ADDR"];
if (count($_POST) == 0 ) {
    header("location: http://www.awebsite.com/?page_id=445");
}
require('wp-load.php');
get_header("header_reg"); 
//echo '<meta http-equiv="expires" content="0">'; 
require_once (dirname(__FILE__)."/dbLog.php");

global $current_user;
get_currentuserinfo();

コードが失敗すると、$_POST配列は空になり、ユーザーはエラーを通知するページにリダイレクトされます。それがpage_id=445ラインです。

みなさん、ありがとうございます。あなたのアイデアや提案は、正しい方向に沿って考えさせてくれます。

4

1 に答える 1

0

投稿ごとに検証キャプチャを追加できます。そのため、複数回クリックすると、新しいキャプチャ コードが生成され、false が返されます。

それが役に立てば幸い !

于 2013-05-28T11:43:34.250 に答える