2011-10-19 7 views
1

私のコードはフォームの送信レートを制限しています。フォームが送信されると、タイムスタンプと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 
} 
?> 
+0

これは、その後、基本的なデバッグのために呼び出します。 IPはデータベースにありますか?クエリの結果は何か? –

+0

ところで、 'REMOTE_ADDR'が偽造される可能性は非常に低いですが、データベースに入れる前に' $ IP'を消毒するべきです –

+0

IPが入力されています。私は今質問をチェックします。 – AviateX14

答えて

1

$resultにはこの場合のカウントは含まれていません。クエリの結果セットから最初に結果の行をフェッチして比較する必要があります。

$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($row = mysql_fetch_row($result)) { 
    if ($row[0] == 2) { 
     die('You are out of posts this hour.'); 
    } 
} 
+0

これはエラーを返します。(!)警告:mysql_fetch_row()はパラメータ1がリソースであることを期待しています。ブール値はC:\ wamp \ www \ anonpost \ index.phpの453行で与えられます。 – AviateX14

0

使用mysql_fetch_assoc($result)またはmysql_fetch_array($result) ここでは一例です:

$query = 'SELECT count(*) FROM '.$table; 
$result = mysql_query($query); 
$res = mysql_fetch_array($result); 
echo "Count - ".$res[0];exit; 
関連する問題