對,這裏是我的代碼限制表單提交率。提交表單時需要時間戳和IP地址,然後在頁面加載時,我有一條SQL語句,它接受用戶IP,計算它在過去一小時內在數據庫中出現的次數,如果是2,那麼郵政信箱不顯示,否則,問題是,它不是很有效,它只是不斷顯示信箱。代碼如下:用if/else語句檢查MySql計數結果
<?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是什麼?查詢結果是什麼?等等 –
順便說一句,在將數據放入數據庫之前,您應該清理'$ IP',即使極不可能'REMOTE_ADDR'被僞造。 –
IP已輸入。我現在檢查查詢。 – AviateX14