最近、私のシャウト フォームをあらゆる種類のスパムで埋め尽くす厄介な自動フォーム入力ボットに攻撃されました。私のシャウト フォームは、2 つのテキスト ボックスを含む html ファイル、ajax スクリプト (リロードせずに更新するため)、および DB へのすべての挿入データを処理するための php ファイルで構成されています。
これらのボットに対する最小限の保護のために非表示のテキストボックスを実装することを考えていますが、ハニーポット データを php ファイルに渡すことができないため、うまくいきません。私のコード:
HTMLフォーム
<form class="form" method="post" action="postdata.php">
<fieldset id="inputs">
<input id="name" name="name" type="text" placeholder="name" maxlength="20">
<textarea id="message" name="message" type="text" placeholder="message" maxlength="255"></textarea>
</fieldset>
<fieldset id="actions">
<input type="submit" id="submit" value="Submit">
</fieldset>
</form>
Ajax スクリプト
$(function(){refresh_shoutbox();$("#submit").click(function(){var a=$("#name").val();var b=$("#message").val();var c="name="+a+"&message="+b;$.ajax({type:"POST",url:"postdata.php",data:c,success:function(d){$("#shout").html(d);$("#message").val("");$("#name").val("")}});return false})});
function refresh_shoutbox(){var a="refresh=1";$.ajax({type:"POST",headers:{"cache-control":"no-cache"},url:"postdata.php",data:a,success:function(b){$("#shout").html(b)}})};
postdata.php ファイル
<?php
if($_POST['name'] or $_POST['message']) {
$name= $_POST['name'];
$message= $_POST['message'];
///do other stuff/////
?>
HTMLフォームに隠しフィールドを挿入します
<input id="email" name="emails" style="display:none"></br>
しかし、余分な値を既存の ajax スクリプトに渡すことができません。いくつかのコードを試しましたが、うまくいきませんでした。シャウトボックスを再び起動して実行できるようにするための助けはありますか?