1: <?php defined('_JOOS_CORE') or exit();
2:
3: /**
4: * Работа с проверками на безопасность
5: *
6: * @version 1.0
7: * @package Core\Libraries
8: * @subpackage Security
9: * @category Libraries
10: * @author Joostina Team <info@joostina.ru>
11: * @copyright (C) 2007-2012 Joostina Team
12: * @license MIT License http://www.opensource.org/licenses/mit-license.php
13: * Информация об авторах и лицензиях стороннего кода в составе Joostina CMS: docs/copyrights
14: *
15: * */
16: class joosSecurity
17: {
18: /**
19: * Проверка на флуд
20: *
21: * @param string $key название ключа/события проверки
22: * @param int $count число допустимых запусков события
23: * @param int $time число секунд для лимита времени за которое разрешено число запусков события
24: * @param int $ban_time время на котое ставится запрет для повторения события
25: * @return boolean результат проверки
26: */
27: public static function is_flood($key, $count, $time, $ban_time)
28: {
29: $key_flood = md5('flud_' . md5($key));
30: $key_still = md5('still' . md5($key));
31:
32: $cache = joosCache();
33:
34: if ($cache->get($key_still) == 1) {
35: return false;
36: }
37:
38: $tmp = $cache->get($key_flood);
39:
40: if ($tmp === false) {
41: $cache->set($key_flood, 1, $time);
42: } else {
43: $cache->increment($key_flood);
44: }
45:
46: // проверка не прошла, флуд.
47: if ($tmp >= $count) {
48: $cache->set($key_still, 1, $ban_time);
49:
50: return false;
51: }
52:
53: return true;
54: }
55:
56: }
57: