0

私のサイトで奇妙な問題が発生しています。リンクがクリックされるたびに、ファイルが 2 回実行されます。これに気付いた唯一の理由は、キーワードの検索リクエストを送信したときに、MySQL データベースに検索を記録したためです。データベースは常に 2 つのレコードを保存していました (タイム スタンプがあり、レコードが同じ秒で追加されることもありましたが、通常は 1 秒しか離れていませんでした)。サイトにいるのは私だけであり、クエリがループで呼び出されていないことはわかっていました。そこで、追加されるコード行数を確認するために fopen($file, 'a') を実行しましたが、ほとんどの場合、2 行のコードが追加されました。追加するレコードを 1 つ取得できる唯一の方法は、同じ検索を 2 ~ 3 回続けて実行することでした。

だから私が考えることができる唯一のことは、私たちのサイトに良い広告があるということです. 私が想像できる唯一のことは、リンクをクリックすると、広告に関連付けられている JavaScript も同じリンクをたどるということです。

他に素晴らしいアイデアはありますか?

4

3 に答える 3

5

次のような実際のリンクのないアセット (画像、js、css) がある場合に、このような症状が見られました。

<img src="" />

この場合、ブラウザーは同じ URL を取得しようとしましたが、Acceptヘッダーが異なります。ログに記録すると、これが事実であるかどうかを確認するのに役立ちます。

于 2012-05-16T18:37:18.773 に答える
1

フォームを処理するとき、次のように送信ボタンが実際にクリックされたかどうかを確認します。

if (isset($_POST['submit']) && $_POST['submit'] == 'submit') {
   // Process form
} else {
   // Just display it
}

これにより、2 回処理することを防ぐことができます。また、303 リダイレクトを使用して、フォーム投稿後にリダイレクトする必要があります。

于 2012-05-16T18:44:57.903 に答える
0

私は怖がるべきですか?

この投稿を書いてすぐに、Google 広告のコードをコメントアウトしました (そして、@cillosis が提案しているのを見ました)。

もう問題はありません。しかし、それは完全にGoogleでした。これは、検索を実行するたびに、Apache アクセス ログに記録されていました。

66.249.73.87 - - [16/May/2012:12:38:45 -0500] "GET /search.php?page_num=1&keywords=stylist&city=&state=AL&cat= HTTP/1.1" 200 14185 "-" "Mediapartners-Google"

怖いです.....

于 2012-05-16T18:49:15.460 に答える