私のコードはフォームの送信レートを制限しています。フォームが送信されると、タイムスタンプとIPアドレスが取得され、次にページがロードされます。ユーザIPを取得し、過去1時間にデータベースに何回出現するかを数えます。ポストボックスは表示されません。そうでなければ、問題はそれがうまくいかないことです。ポストボックスが何であっても表示され続けます。コードは次のとおりです。MySqlの結果をif/else文で確認してください
<?php
$IP = $_SERVER['REMOTE_ADDR'];
$sql = "select count(*) from mysql_table where ip='$IP' and timestamp > (DATE_ADD(now(), INTERVAL -1 HOUR))";
$result = mysql_query($sql) or print mysql_error();
if ($result['count(*)'] == 2) {
die('You are out of posts this hour.');
}
else {
?>
<font style="position:relative; margin: 0 auto; top:15px; color:#fff; font-size:16px; font-family:Arial;">Note, once you have posted, it <b>CANNOT</b> be removed.</font>
<div id="postbox">
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<textarea id="postbox" name="postbox"></textarea><br />
<input type="checkbox" name="allowcommenting" value="1" id="commenting" CHECKED ><font style="margin-right:45px; font-family:Arial; font-size:18px; color:#fff; position:relative; top:15px;">Allow commenting?</font>
<?php
require_once 'math-security.php';
$math = new BasicMathSecurity('math');
echo $math->getField();
?>
<input type="submit" name="submit" id="submit" value="Share" value="This cannot be undone." />
</form>
</div>
<?php
}
?>
これは、その後、基本的なデバッグのために呼び出します。 IPはデータベースにありますか?クエリの結果は何か? –
ところで、 'REMOTE_ADDR'が偽造される可能性は非常に低いですが、データベースに入れる前に' $ IP'を消毒するべきです –
IPが入力されています。私は今質問をチェックします。 – AviateX14