簡體   English   中英

如何防止Google Bot(或其他Bot)使用先前提交的信息提交HTML表單?

[英]How To Prevent Google Bot (or other Bots) from Submitting my HTML form with previously submitted Information?

Bot錯誤地提交了我的HTML表單,我一直遇到問題,我認為這是Google Bot。

HTML表單是典型的潛在客戶生成表單。 提交后,數據將由php頁面解析,然后將數據保存到典型的mysql數據庫中,並通過電子郵件將數據發送給公司。 通過onClick事件提交表單時,第三方供應商腳本會將數據發送到儀表板應用程序。

難題在於,周一收到的真正有效的表單提交會在幾天后再次提交。

而且,這些“虛假”提交通常在一兩分鍾之內快速提交,通常是連續八次。

托管服務器人員說,是Google Bot提交了已提交有效信息的表單。 這些提交不是典型的垃圾郵件垃圾郵件。

他們建議使用robots.txt阻止Bot訪問表單和解析頁面。 我已經做到了。 我什至放入了meta標簽,以防止Bot訪問解析頁面。 看來一切都失敗了。

並且,在“錯誤”提交后,數據將保存到數據庫,並將包含數據的電子郵件發送給公司。

但是,未執行將數據發送到儀表板的第三方腳本。

因此,數據庫中存在重復的條目,並且公司的收件箱中充滿了需要整理的重復條目。

有什么幫助嗎? 其他人有這種經歷嗎? Bot可以提交表單似乎很奇怪(如果它確實是在提交表單,或者是以某種方式從誠實的表單提交中讀取信息,然后再次提交表單以查看表單的去向,則為之)。

預先感謝您對這個問題的幫助和見解。

如果GoogleBot確實使用假數據提交表單,則意味着它認為您擁有導航表單,而不是聯系表單

確保<form>僅通過method="POST"並使用典型的輸入name屬性,例如“ name”和“ email”。 要求它們在提交之前是有效的。

作為最后的手段,PHP可以使用隱藏的現時值提供HTML表單:

<?php
  session_start();
  $_SESSION['nonce'] = rand();
  echo '<input type="hidden" name="nonce" value="'.$_SESSION['nonce'].'">';
?>

提交后檢查:

<?php
  session_start();
  if ($_POST['nonce'] !== $_SESSION['nonce']) {
    // bad stuff here
  }
  else unset($_SESSION['nonce']); // Prevent double submissions
?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM