我有实时聊天,如果用户连续聊了5次以上我需要禁止
这是sql:
function countMessages() {
global $tsUser;
$querys = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT * FROM c_chat_messages where msg_user = "'.$tsUser->uid.'" ORDER BY msg_id ASC');
$counts = db_exec('num_rows', $querys);
if($counts > 5) { $this->banUser(); }
}
$ tsUser-> uid是用户的ID
我需要检查用户是否连续聊了5次以上,以便php执行$ this-> banUser();功能
答案 0 :(得分:0)
您必须获取用户在数据库表中发送的每条消息的timestamp
。
而且你可以通过计算消息之间不同的时间来查询用户是否在过去15秒内发送了超过5条消息,从而查询查询。
获取该用户发送的最后五条消息,
SELECT * FROM c_chat_messages where msg_user = "'.$tsUser->uid.'" ORDER BY msg_id DESC limit 0,5
获得last and first record returned by above query
之间的差异。
以秒为单位获得时差(
)SELECT TIME_TO_SEC(TIMEDIFF('2010-08-20 12:01:00', '2010-08-20 12:00:00')) diff;
你可以每隔一两秒调用一次ajax文件来检查这个。
如果需要进一步澄清,请告诉我。