Вход Регистрация
Файл: sys/inc/fnc.php
Строк: 180
<?php

// для php 4 (альтернатива file_put_contents)
if (!function_exists('file_put_contents')) {

    function 
file_put_contents($file$data) {
        
$f = @fopen($file'w');
        return @
fwrite($f$data);
        @
fclose($f);
    }

}

function 
img($name) {
    return 
"<img class = 'img' src = '/style/img/$name' />";
}

#Защита от частых запросов с одного IP
if ($set['antidos']) {
    
$antidos[] = array('time' => $time);
    
$k_loads 0;
    if (
is_file('sys/tmp/antidos_' $iplong '.dat')) {
        
$antidos_dat unserialize(file_get_contents('sys/tmp/antidos_' $iplong '.dat'));
        for (
$i 0$i 150 && $i sizeof($antidos_dat); $i++) {
            if (
$antidos_dat[$i]['time'] > $time 5) {
                
$k_loads++;
                
$antidos[] = $antidos_dat[$i];
            }
        }
    }
    if (
$k_loads 100) {
        if (
mysql_result(mysql_query("SELECT COUNT(*) FROM `ban_ip` WHERE `min` <= '$iplong' AND `max` >= '$iplong'"), 0) == 0) {
            
mysql_query("INSERT INTO `ban_ip` (`min`, `max`, `prich`) values('$iplong', '$iplong', 'AntiDos')"$db);
        }
    }
    @
file_put_contents('sys/tmp/antidos_' $iplong '.dat'serialize($antidos));
    @
chmod('sys/tmp/antidos_' $iplong '.dat'0777);
}


// бан по IP
if (mysql_result(mysql_query("SELECT COUNT(*) FROM `ban_ip` WHERE `min` <= '$iplong' AND `max` >= '$iplong'"), 0) != 0) {
    if (!isset(
$ban_ip_page)) {
        
header("Location: /ban_ip.php");
        exit;
    }
}
if (isset(
$ip2['cl']) && mysql_result(mysql_query("SELECT COUNT(*) FROM `ban_ip` WHERE `min` <= '" ip2long($ip2['cl']) . "' AND `max` >= '" ip2long($ip2['cl']) . "'"), 0) != 0) {
    if (!isset(
$ban_ip_page)) {
        
header("Location: /ban_ip.php");
        exit;
    }
}
if (isset(
$ip2['xff']) && mysql_result(mysql_query("SELECT COUNT(*) FROM `ban_ip` WHERE `min` <= '" ip2long($ip2['xff']) . "' AND `max` >= '" ip2long($ip2['xff']) . "'"), 0) != 0) {
    if (!isset(
$ban_ip_page)) {
        
header("Location: /ban_ip.php");
        exit;
    }
}

function 
getChmodToRead($is_dir false) {
    if (
$is_dir) {
        return 
0500;
    } else {
        return 
0400;
    }
}

// рекурсивное удаление папки
function delete_dir($dir) {
    if (
is_dir($dir)) {
        
$od opendir($dir);
        while (
$rd readdir($od)) {
            if (
$rd == '.' || $rd == '..')
                continue;
            if (
is_dir("$dir/$rd")) {
                @
chmod("$dir/$rd"0777);
                
delete_dir("$dir/$rd");
            } else {
                @
chmod("$dir/$rd"0777);
                @
unlink("$dir/$rd");
            }
        }
        
closedir($od);
        @
chmod("$dir"0777);
        return @
rmdir("$dir");
    } else {
        @
chmod("$dir"0777);
        @
unlink("$dir");
    }
}

// очистка временной папки
if (!isset($hard_process)) {
    
$q mysql_query("SELECT * FROM `cron` WHERE `id` = 'clear_tmp_dir'");
    if (
mysql_num_rows($q) == 0)
        
mysql_query("INSERT INTO `cron` (`id`, `time`) VALUES ('clear_tmp_dir', '$time')");
    
$clear_dir mysql_fetch_assoc($q);
    if (
$clear_dir['time'] == NULL || $clear_dir['time'] < $time 60 60 24) {
        
$hard_process true;
        
mysql_query("UPDATE `cron` SET `time` = '$time' WHERE `id` = 'clear_tmp_dir'");
        
$od opendir('sys/tmp/');
        while (
$rd readdir($od)) {
            if (!
preg_match('#^.#'$rd) && filectime('sys/tmp/' $rd) < $time 60 60 24) {
                @
delete_dir('sys/tmp/' $rd);
            }
        }
        
closedir($od);
    }
}


// Подведение итогов статистики
if (!isset($hard_process)) {
    
$q mysql_query("SELECT * FROM `cron` WHERE `id` = 'visit' LIMIT 1");
    if (
mysql_num_rows($q) == 0)
        
mysql_query("INSERT INTO `cron` (`id`, `time`) VALUES ('visit', '$time')");
    
$visit mysql_fetch_assoc($q);
    if (
$visit['time'] == NULL || $visit['time'] < time() - 60 60 24) {
        if (
function_exists('set_time_limit'))
            @
set_time_limit(600); // Ставим ограничение на 10 минут
        
$last_day mktime(000date('m'), date('d') - 1); // начало вчерашних суток
        
$today_time mktime(000); // начало сегодняшних суток
        
if (mysql_result(mysql_query("SELECT COUNT(*) FROM `visit_everyday` WHERE `time` = '$last_day'"), 0) == 0) {
            
$hard_process true;
// записываем общие данные за вчерашние сутки в отдельную таблицу
            
mysql_query("INSERT INTO `visit_everyday` (`host` , `host_ip_ua`, `hit`, `time`) VALUES ((SELECT COUNT(DISTINCT `ip`) FROM `visit_today` WHERE `time` < '$today_time'),(SELECT COUNT(DISTINCT `ip`, `ua`) FROM `visit_today` WHERE `time` < '$today_time'),(SELECT COUNT(*) FROM `visit_today` WHERE `time` < '$today_time'),'$last_day')");
            
mysql_query('DELETE FROM `visit_today` WHERE `time` < ' $today_time);
        }
    }
}

// запись о переходах на сайт
if (isset($_SERVER['HTTP_REFERER']) && !preg_match('#' preg_quote($_SERVER['HTTP_HOST']) . '#'$_SERVER['HTTP_REFERER']) && $ref = @parse_url($_SERVER['HTTP_REFERER'])) {
    if (isset(
$ref['host'])) {
        
$_SESSION['http_referer'] = $ref['host'];
    }
}

// определение оператора
function opsos($ips NULL) {
    global 
$ip;
    if (
$ips == NULL) {
        
$ips $ip;
    }
    
$ipl ip2long($ips);
    if (
mysql_result(mysql_query("SELECT COUNT(*) FROM `opsos` WHERE `min` <= '$ipl' AND `max` >= '$ipl'"), 0) != 0) {
        
$opsos mysql_fetch_assoc(mysql_query("SELECT opsos FROM `opsos` WHERE `min` <= '$ipl' AND `max` >= '$ipl' LIMIT 1"));
        return 
stripcslashes(htmlspecialchars($opsos['opsos']));
    } else {
        return 
false;
    }
}

if (!isset(
$hard_process)) {
    
$q mysql_query("SELECT * FROM `cron` WHERE `id` = 'everyday'");
    if (
mysql_num_rows($q) == 0) {
        
mysql_query("INSERT INTO `cron` (`id`, `time`) VALUES ('everyday', '" time() . "')");
    }
    
$everyday mysql_fetch_assoc($q);
    if (
$everyday['time'] == NULL || $everyday['time'] < time() - 60 60 24) {
        
$hard_process true;
        if (
function_exists('set_time_limit')) {
            @
set_time_limit(600);
        } 
// Ставим ограничение на 10 минут
        
mysql_query("UPDATE `cron` SET `time` = '" time() . "' WHERE `id` = 'everyday'");
        
mysql_query("DELETE FROM `guests` WHERE `date_last` < '" . (time() - 600) . "'");
        
mysql_query("DELETE FROM `chat_post` WHERE `time` < '" . (time() - 60 60 24) . "'"); // удаление старых постов в чате
        
mysql_query("DELETE FROM `user` WHERE `activation` != null AND `time_reg` < '" . (time() - 60 60 24) . "'"); // удаление неактивированных аккаунтов

        
$tab mysql_query('SHOW TABLES FROM ' $set['mysql_db_name']);
        for (
$i 0$i mysql_num_rows($tab); $i++) {
            
mysql_query("OPTIMIZE TABLE `" mysql_tablename($tab$i) . "`"); // оптимизация таблиц
        
}
    }
}

// вывод ошибок
function err() {
    global 
$err;
    global 
$passgen;
    if (isset(
$err)) {
        if (
is_array($err)) {
            foreach (
$err as $key => $value) {
                echo 
"<div class='errs'>$value</div>n";
            }
        } else {
            echo 
"<div class='errs'>$err</div>n";
        }
    }
}

function 
msg($msg) {
    global 
$passgen;
    echo 
"<div class='msgs'>$msg</div>n";
}

// вывод сообщений
// отправка запланированных писем
$q mysql_query("SELECT * FROM `mail_to_send` LIMIT 1");
if (
mysql_num_rows($q) != 0) {
    
$mail mysql_fetch_assoc($q);
    
$adds "From: "admin@$_SERVER[HTTP_HOST]" <admin@$_SERVER[HTTP_HOST]>n";
    
$adds .= "Content-Type: text/html; charset=utf-8n";
    
mail($mail['mail'], '=?utf-8?B?' base64_encode($mail['them']) . '?='$mail['msg'], $adds);
    
mysql_query("DELETE FROM `mail_to_send` WHERE `id` = '$mail[id]'");
}

#ограничение времени выполнения скрипта

function time_limit($time) {
    if (
SET_TIME_LIMIT && @set_time_limit($time)) {
        return 
true;
    } else {
        
false;
    }
}

#сохранение настроек системы

function save_settings($set) {
    if (
$fopen = @fopen('sys/ini/settings.ini''w')) {
        
$ini_file = array('[SYSTEM]');


        foreach (
$set as $key => $value) {
            
$ini_file[] = $key '="' htmlentities((string) $valueENT_QUOTES'UTF-8') . '";';
        }


        @
fputs($fopenimplode("rn"$ini_file));
        @
fclose($fopen);
        return 
true;
    } else {
        return 
false;
    }
}

// запись действий администрации
function admin_log($mod$act$opis) {
    global 
$user;

    
$q mysql_query("SELECT * FROM `admin_log_mod` WHERE `name` = '" mysql_real_escape_string($mod) . "' LIMIT 1");
    if (
mysql_num_rows($q) == 0) {
        
mysql_query("INSERT INTO `admin_log_mod` (`name`) VALUES ('" mysql_real_escape_string($mod) . "')");
        
$id_mod mysql_insert_id();
    } else {
        
$id_mod mysql_result($q0);
    }

    
$q2 mysql_query("SELECT * FROM `admin_log_act` WHERE `name` = '" mysql_real_escape_string($act) . "' AND `id_mod` = '$id_mod' LIMIT 1");
    if (
mysql_num_rows($q2) == 0) {
        
mysql_query("INSERT INTO `admin_log_act` (`name`, `id_mod`) VALUES ('" mysql_real_escape_string($act) . "', '$id_mod')");
        
$id_act mysql_insert_id();
    } else {
        
$id_act mysql_result($q20);
    }

    
mysql_query("INSERT INTO `admin_log` (`time`, `id_user`, `mod`, `act`, `opis`) VALUES ('" time() . "','$user[id]', '$id_mod', '$id_act', '" mysql_real_escape_string($opis) . "')");
}

// Загрузка остальных функций из папки "sys/fnc"
$opdirbase opendir('sys/fnc');
while (
$filebase readdir($opdirbase)) {
    if (
preg_match('#.php$#i'$filebase)) {
        include_once(
'sys/fnc/' $filebase);
    }
}

// запись о посещении
mysql_query("INSERT INTO `visit_today` (`ip` , `ua`, `time`) VALUES ('$iplong', '" mysql_real_escape_string($_SERVER['HTTP_USER_AGENT']) . "', '$time')");
Онлайн: 0
Реклама