1) ajax запросы на другие домены нельзя слать, юзай jsonp
2) второй вариант поставить nginx и проксировать на нужном локэйшине нужный урл
Написал: Димон
02.05.2012 / 19:08
/**
* Функция проверки спама
* by NEx
*
* @param
* $text string - какое-нибудь сообщение
* $time int - интервал времени, который надо проверять
* $number int - количество записей в интервал времени за который можно считать сообщение спамом
* $match int - сколько одинаковых сообщений можно ввести в интервал времени
*
* @return boolean
*/function is_spam($text, $time =60, $number =3, $match =1){
$is_spam =false;
$ip = $_SERVER['REMOTE_ADDR'];// можно ip2long перевести
$hash = md5($text);
$time = time()-$time;
$SQL ="SELECT `hash` FROM `spam` WHERE `tc` > '".$time."' AND `ip` = '".$ip."' LIMIT ".$number;
$res = mysql_query($SQL);if(mysql_num_rows($res)>=$number)
$is_spam =true;else{while($row = mysql_fetch_assoc($res)){
$number--;if($row['hash']== $hash)
$match--;if(!$number ||!$match)
$is_spam =true;}}
$SQL ="INSERT INTO `spam` SET `tc` = '".time()."', `ip` = '".$ip."', `hash` = '".$hash."'";
mysql_query($SQL);return $is_spam;}
Нужна табличка spam c полями tc, ip, hash
Для производительности тип мемори, и 3 индекса на 3 поля
Пользоваться можно так:
$msg = $_POST['msg'];
if(is_spam($msg, 30, 3, 1)){ //проверит не вводили ли в течении 30 секунд 3 сообщения или 1 такое же сообщение
//это спам
}
else {
//идем дальше
}
Написал: Димон
01.11.2011 / 23:23