2011-12-27 1 views
0

기본적으로 스팸 탐지 시스템에서 작업 중이며 x 초 전에 행을 삽입했는지 감지하고 싶습니다. x는 5 초가 될 수 있으므로 5 초 전까지 행이 표에 삽입되었는지 확인하고 싶습니다. 예를 목적으로x 초 전에 데이터베이스에 행이 삽입되었는지 감지 할 수 있습니까?

테이블 이름은 my_table 수 있습니다. 이것은 당신이 중 하나가 여기에 올바른 방향으로 날 지점 수 있다면

if (mysql_num_rows($spam_validate)==0) { 
    //keep going 
    } else { 
    echo 'Spam was detected'; 
    } 

, 내가 분명히 아니에요 .... 내가 함께 ... 그리고

$spam_validate = mysql_query("select * FROM my_table WHERE date_time < '3'"); 

내가 할 것 해낸 것입니다 올바른 도움을 주셔서 감사합니다.

+0

가 너무 나쁜 오라클 RowSCN에 MySQL의 해당이없는 것처럼 수표 코드가 보일 것이다. – xQbert

답변

3

당신은 타임 스탬프 필드를 필요 당신이 행을 삽입 할 때 사용자가 설정 한 해당 테이블에서, (유형 DATETIME이 될 수 있습니다).

INSERT INTO foo (spam, eggs, timestamp) VALUES (42, 88, NOW()) 

그런 다음이를 선택할 수 있습니다. 이 쿼리는 작동해야합니다.

DATEADD과 직접적으로 비슷한 DATETIME 산술에 유의하십시오.

+0

'date_time' 필드 유형이지만,'now()'SQL 함수를 사용하여 날짜를 사용합니까? 그렇다면 필드 유형이 '타임 스탬프'가되어야합니까? – Frank

1

데이터베이스에 타임 스탬프를 넣은 다음 사용자 입력을 받으면 타임 스탬프를 가져와 마지막 게시 시간과 X 초 (또는 스로틀, 아마도 더 좋은 단어가 될 것임)가 현재 시간 소인과 같습니다.

<?php 
$ip = $_REMOTE['SERVER_ADDR']; // client's IP address 
$sql = "SELECT time FROM spam WHERE ip = '$ip' LIMIT 1"; 
$query = mysql_query($sql); 
if(0 < mysql_num_rows($query)) 
{ 
    while($result = mysql_fetch_assoc($query)) 
    { 
     if($result['time'] < $time) 
     { 
      $sql = "DELETE FROM spam WHERE ip = '$ip'"; 
      $return_val = mysql_query($sql); 
     } 
    } 
} 
else 
{ 
    $sql = "INSERT INTO spam (ip,time) VALUES ('$ip','$time');"; 
    $return_val = mysql_query($sql); 
} 
?> 
0

테이블해야

X = post_limit; 
if((last_post_time + X) <= current_time) 
{ 
    allow_to_post; 
} 
else 
{ 
    do_not_allow_to_post; 
} 

여기에 올바른 방향으로뿐만 아니라 당신을 가리킬 수 내 이미지 보드 소프트웨어에 사용되는 코드의 조각이있다 : 여기

는 의사 코드 예제 종류가 timestamp 인 열 ( inserted_at)이 있습니다. 당신은 쿼리가 같을 것이다 삽입 :

INSERT INTO tbl (inserted_at, somecol, someothercol) VALUES (NOW(), 'whatever', 76) 

... 그리고

$interval = 5; 
$sql = "SELECT count(*) AS denied FROM tbl WHERE inserted_at > NOW() - $interval"; 
$spam_validate = mysql_fetch_array(mysql_query($sql)); 

if ($spam_validate['denied']) { 
    echo 'Spam was detected'; 
} else { 
    // keep going 
} 
관련 문제