<?php
////////////////////////////////////////
///// Kyber ApiCMS 2013 apicms.ru //////
///// Запрещается продажа данной CMS ///
///// Автор Евгений Медянкин Kyber /////
///// ICQ 626-000-895 или 37-22-47 /////
////////////////////////////////////////
@error_reporting(E_ALL ^ E_NOTICE);
@ini_set('display_errors', false);
@ini_set('html_errors', false);
@ini_set('error_reporting', E_ALL ^ E_NOTICE);
//////////////////////////////////////// подключение базы данных
define ('DBHOST', 'localhost'); ///// имя хоста (не хостинга не путать!!!)
define ('DBNAME', 'имя базы'); ///// имя базы данных
define ('DBPASS', 'Пароль от базы'); ///// пароль от базы данных
define ('DBUSER', 'имя пользователя бд'); ///// имя пользователя базы данных
// авторизация на сервере базы
if(!($db=@mysql_connect(DBHOST, DBUSER, DBPASS))){
echo '<style>
body {
background-color: #efefef;
margin: 50px auto;
max-width: 650px;
font-size: 15px;
color: #16223b;
font-weight: bold;
font-family: Arial;
}
</style>';
echo '<title>APICMS - Система управления сайтом</title>';
echo "<center><font color='red'>Нет соединения с сервером базы!</font></center></br>
<hr> Возможно на вашем хостинге локальный сервер базы данных не соответствует значению 'localhost' уточните значение вашего сервера базы данных в хостинг-провайдера!</br>
<hr> Так же возможно вы допустили ошибку при вводе данных базы. Проверьте еще раз точность введенных данных.</br>
<hr> </br> <center><a href='http://apicms.ru'>APICMS.RU - универсальная система управления сайтом</a></br><a href='http://klybok.net'>KLYBOK.NET - мир эксклюзивных скриптов и шаблонов</a>
</br></br></br><small>(c) Разработчик системы Евгений Медянкин Kyber</small></center>";
exit;
}
if (!@mysql_select_db(DBNAME,$db)){
echo '<style>
body {
background-color: #efefef;
margin: 50px auto;
max-width: 650px;
font-size: 15px;
color: #16223b;
font-weight: bold;
font-family: Arial;
}
</style>';
echo '<title>APICMS - Система управления сайтом</title>';
echo "<center><font color='red'>Нет соединения с сервером базы!</font></center></br>
<hr> Вы допустили ошибку при вводе пользователя базы данных! Пожалуйста проверьте правильность введенных вами данных </br>
<hr> </br> <center><a href='http://apicms.ru'>APICMS.RU - универсальная система управления сайтом</a></br><a href='http://klybok.net'>KLYBOK.NET - мир эксклюзивных скриптов и шаблонов</a>
</br></br></br><small>(c) Разработчик системы Евгений Медянкин Kyber</small></center>";
exit;
}
$connect = mysql_connect(DBHOST, DBUSER, DBPASS) or die(mysql_error('Ошибка подключения, к пользователю Базы данных MySQL, либо не верно введен пароль! Проверьте параметры подключения!'));
mysql_query('SET NAMES `utf8`', $connect);
mysql_select_db(DBNAME, $connect) or die('Ошибка подключения к Базе данных MySQL! Проверьте параметры подключения!');
/////////////////////////////////// общий фильтр
function check($check){
$check = htmlspecialchars(mysql_real_escape_string($check));
$search = array('|', '\'', '$', '\\', '^', '%', '`', "\0", "\x00", "\x1A", "⁄∩");
$replace = array('|', ''', '$', '\', '^', '%', '`', '', '', '', '');
$msg = str_replace($search, $replace, $msg);
$msg = stripslashes(trim($msg));
return $check;
}
////////////////////////////////////////делаем переменную с настройками
$api_settings = mysql_fetch_assoc(mysql_query("SELECT * FROM `settings`"));
///////////////////////////////////
if (isset($_COOKIE['userlogin']) && isset($_COOKIE['userpass'])) {
$userlogin = check($_COOKIE['userlogin']);
$userpass = check($_COOKIE['userpass']);
////////////////////////////////////////
if (isset($user['id'])) {
$config['onpage'] = $user['onpage'];
if ($user['login'] != $userlogin or $user['pass'] != $userpass) {
setcookie('userlogin', '', time() - 86400*31);
setcookie('userpass', '', time() - 86400*31);
}
}
}
///////////////////////////////////
$query = mysql_query("SELECT * FROM `users` WHERE `login` = '$userlogin' and `pass` = '$userpass' LIMIT 1");
$user = mysql_fetch_assoc($query);
///////////////////////////////////
$set['api_v'] = '2.0'; // определяем версию CMS
$set['site'] = $_SERVER['HTTP_HOST']; // определяем сайт
$time = time(); // создаем переменную на время
$ip = $_SERVER['REMOTE_ADDR']; // определяем ip
define("H", $_SERVER["DOCUMENT_ROOT"].'/'); // домашний каталог
///////////////////////////////////
// дополнительная проверка $_GET
foreach ($_GET as $check_url) {
if (!is_string($check_url) || !preg_match('#^(?:[a-z0-9_\-/]+|\.+(?!/))*$#i', $check_url)) {
header ('Location: ../');
exit;
}
}
unset($check_url);
/////////////////////////////////// блокировка пользователя
if (isset($user['id']) && $user['block_time']>=time() && $_SERVER['PHP_SELF']!='/block.php'){
header ('Location: /block.php');
}
/////////////////////////////////// активация почты пользователя
if (isset($user['id']) && $user['activ_mail']!='1' && $_SERVER['PHP_SELF']!='/mail_activate.php'){
header ('Location: /mail_activate.php');
}
/////////////////////////////////// узнаем удален ли инсталл, если нет отправляем в него =)
if (file_exists(H.'install/index.php') && $_SERVER['PHP_SELF']!='/install/index.php' && $_SERVER['PHP_SELF']!='/install/step_2.php' && $_SERVER['PHP_SELF']!='/install/step_3.php' && $_SERVER['PHP_SELF']!='/install/last_step.php'){
header("Location: /install/");
exit;
}
if ($api_settings['open_guest']==0){
/////////////////////////////////// закрываем доступ гостям
if (!isset($user['id']) && $_SERVER['PHP_SELF']!='/index.php' && $_SERVER['PHP_SELF']!='/auth.php' && $_SERVER['PHP_SELF']!='/lost_pass.php' && $_SERVER['PHP_SELF']!='/err.php' && $_SERVER['PHP_SELF']!='/captcha.php' && $_SERVER['PHP_SELF']!='/reg.php' && $_SERVER['PHP_SELF']!='/install/index.php' && $_SERVER['PHP_SELF']!='/install/step_2.php' && $_SERVER['PHP_SELF']!='/install/step_3.php' && $_SERVER['PHP_SELF']!='/install/last_step.php'){
header ('Location: /index.php');
}
}
/////////////////////////////////// функция переноса строк
function apicms_br($br){
$br= htmlspecialchars($br);
$br=str_replace("\r\n","</br>",$br);
return $br;
}
/////////////////////////////////// функция обработки BB-code
function apicms_bb_code($msg){
$msg = preg_replace('#\[code\](.*?)\[/code\]#ie', 'highlight("\1")', $msg);
$msg = preg_replace('#\[big\](.*?)\[/big\]#si', '<big>\1</big>', $msg);
$msg = preg_replace('#\[b\](.*?)\[/b\]#si', '<b>\1</b>', $msg);
$msg = preg_replace('#\[i\](.*?)\[/i\]#si', '<i>\1</i>', $msg);
$msg = preg_replace('#\[u\](.*?)\[/u\]#si', '<u>\1</u>', $msg);
$msg = preg_replace('#\[small\](.*?)\[/small\]#si', '<small>\1</small>', $msg);
$msg = preg_replace('#\[img\](.*?)\[/img\]#si', '<a href="\1"><img src="\1" width="100px"></a>', $msg);
$msg = preg_replace('#\[red\](.*?)\[/red\]#si', '<span style="color:#ff0000">\1</span>', $msg);
$msg = preg_replace('#\[green\](.*?)\[/green\]#si', '<span style="color:#00cc00">\1</span>', $msg);
$msg = preg_replace('#\[blue\](.*?)\[/blue\]#si', '<span style="color:#0000ff">\1</span>', $msg);
$msg = preg_replace('#\[yellow\](.*?)\[/yellow\]#si', '<span style="color:#FFFF00">\1</span>', $msg);
$msg = preg_replace('#\[q\](.*?)\[/q\]#si', '<div class="quote">\1</div>', $msg);
$msg = preg_replace('#\[del\](.*?)\[/del\]#si', '<del>\1</del>', $msg);
$msg = preg_replace('#\[url=("|\'|)(.*?)("|\'|)\](.*?)\[/url\]#si', '<a href="$2">$4</a>', $msg);
$msg = preg_replace('#\[url\](.*?)\[/url\]#si', '<a href="$1">$1</a>', $msg);
return $msg;
}
/////////////////////////////////// функция генерации
function apicms_generate($number){
$arr = array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','r','s','t','u','v','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','R','S','T','U','V','X','Y','Z','1','2','3','4','5','6','7','8','9','0');
// Генерируем пароль
$pass = '';
for($i = 0; $i < $number; $i++){
// Вычисляем случайный индекс массива
$index = rand(0, count($arr) - 1);
$pass .= $arr[$index];
}
return $pass;
}
/////////////////////////////////// функция формирования постраничной навигации
function page($k_page=1){ // Выдает текущую страницу
$page=1;
if (isset($_GET['page'])){
if ($_GET['page']=='end')$page=intval($k_page);elseif(is_numeric($_GET['page'])) $page=intval($_GET['page']);}
if ($page<1)$page=1;
if ($page>$k_page)$page=$k_page;
return $page;}
function k_page($k_post=0,$k_p_str=10){ // Высчитывает количество страниц
if ($k_post!=0){$v_pages=ceil($k_post/$k_p_str);return $v_pages;}
else return 1;}
///////////////////////////////////
function str($link='?',$k_page=1,$page=1){ // Вывод номеров страниц (только на первый взгляд кажется сложно ;))
if ($page<1)$page=1;
if ($page>1)echo " <a href=\"".$link."page=".($page-1)."\" title='Предыдущая страница (№".($page-1).")'>назад</a> ";
if ($page!=1)echo "<a href=\"".$link."page=1\" title='Страница №1'>1</a>";else echo "<b>1</b>";
for ($ot=-1; $ot<=1; $ot++){
if ($page+$ot>1 && $page+$ot<$k_page){
if ($ot==-1 && $page+$ot>2)echo " ..";
if ($ot!=0)echo " <a href=\"".$link."page=".($page+$ot)."\" title='Страница №".($page+$ot)."'>".($page+$ot)."</a>";else echo " <b>".($page+$ot)."</b>";
if ($ot==1 && $page+$ot<$k_page-1)echo " ..";}}
if ($page!=$k_page)echo " <a href=\"".$link."page=end\" title='Страница №$k_page'>$k_page</a>";elseif ($k_page>1)echo " <b>$k_page</b>";
echo " ";
if ($page<$k_page)echo " <a href=\"".$link."page=".($page+1)."\" title='Следующая страница (№".($page+1).")'>вперед</a> ";
}
///////////////////////////////////// вывод времени с возможностью под сдвиг временной под часовые пояса (по надобности)
function apicms_data($time=NULL){
if ($time==NULL)$time=time();
if (isset($user))$time=$time+$user['set_timesdvig']*60*60;
$timep="".date("jMY в H:i", $time)."";
$time_p[0]=date("jnY", $time);
$time_p[1]=date("H:i", $time);
if ($time_p[0]==date("jnY"))$timep=date("H:i:s", $time);
if (isset($user)){
if ($time_p[0]==date("jnY", time()+$user['set_timesdvig']*60*60))$timep=date("H:i:s", $time);
if ($time_p[0]==date("jnY", time()-60*60*(24-$user['set_timesdvig'])))$timep="Вчера в $time_p[1]";}
else{
if ($time_p[0]==date("jnY"))$timep=date("H:i:s", $time);
if ($time_p[0]==date("jnY", time()-60*60*24))$timep="Вчера в $time_p[1]";}
$timep=str_replace("Jan",".01.",$timep);
$timep=str_replace("Feb",".02.",$timep);
$timep=str_replace("Mar",".03.",$timep);
$timep=str_replace("May",".04.",$timep);
$timep=str_replace("Apr",".05.",$timep);
$timep=str_replace("Jun",".06.",$timep);
$timep=str_replace("Jul",".07.",$timep);
$timep=str_replace("Aug",".08.",$timep);
$timep=str_replace("Sep",".09.",$timep);
$timep=str_replace("Oct",".10.",$timep);
$timep=str_replace("Nov",".11.",$timep);
$timep=str_replace("Dec",".12.",$timep);
return $timep;
}
//////////////////////////////////////// функция обработки смайлов
function apicms_smiles($msg){
$q=mysql_query("SELECT * FROM `smiles_list`");
while($post = mysql_fetch_array($q)){
$msg = str_replace($post['sim'], '<img src="/design/smiles/'.$post['name'].'.gif" alt="'.$post['name'].'"/>', $msg);
}
return $msg;
}
//////////////////////////////////////// функция вывода браузера
function browser(){
global $ua;
if (preg_match('/opera mini/i', $ua)) $browser = 'Opera Mini';
else if (preg_match('/Chrome/i', $ua))$browser = 'Chrome';
else if (preg_match('/Opera/i', $ua)) $browser = 'Opera';
else if (preg_match('/MSIE/i', $ua)) $browser = 'IE';
else if (preg_match('/Mozilla/i', $ua)) $browser = 'Mozilla';
else if (preg_match('/ucweb/i', $ua)) $browser = 'UCWeb';
else $browser = 'Неизвестно';
return $browser;
}
/////////////////////////////////// функция обработки операционной системы + поисковые системы
function getOS($userAgent) {
// Создадим список операционных систем в виде элементов массива
$oses = array (
'iPhone' => '(iPhone)',
'Android' => '(android)',
'iPad' => '(iPad)',
'Blackberry OS' => '(rim)',
'Windows 3.11' => 'Win16',
'Windows 95' => '(Windows 95)|(Win95)|(Windows_95)',
'Windows 98' => '(Windows 98)|(Win98)',
'Windows 2000' => '(Windows NT 5.0)|(Windows 2000)',
'Windows XP' => '(Windows NT 5.1)|(Windows XP)',
'Windows 2003' => '(Windows NT 5.2)',
'Windows Vista' => '(Windows NT 6.0)|(Windows Vista)',
'Windows 7' => '(Windows NT 6.1)|(Windows 7)',
'Windows 8' => '(Windows NT 6.2)|(Windows 8)',
'Windows NT 4.0' => '(Windows NT 4.0)|(WinNT4.0)|(WinNT)|(Windows NT)',
'Windows ME' => 'Windows ME',
'Open BSD'=>'OpenBSD',
'Sun OS'=>'SunOS',
'Linux'=>'(Linux)|(X11)',
'Safari' => '(Safari)',
'Macintosh'=>'(Mac_PowerPC)|(Macintosh)',
'QNX'=>'QNX',
'BeOS'=>'BeOS',
'OS/2'=>'OS/2',
'Google' => '(Googlebot)',
'Yahoo! | AOL' => '(Slurp) | (Yahoo! Slurp) | (Yammybot)',
'MSN | Live' => '(MSNBot)',
'Ask' => '(Teoma)',
'AltaVista' => '(Scooter)',
'Alexa' => '(ia_archiver)',
'Lycos' => '(Lycos)',
'Яндекс' => '(Yandex)',
'Рамблер' => '(StackRambler)',
'Мэйл.ру' => '(Mail.Ru)',
'Aport' => '(Aport)',
'Search Bot'=>'(nuhk)|(Openbot)|(Slurp/cat)'
);
foreach($oses as $os=>$pattern){
if(eregi($pattern, $userAgent)) { // Пройдемся по массиву $oses для поиска соответствующей операционной системы.
return $os;
}
}
return 'Unknown'; // Хрен его знает, чего у него на десктопе стоит.
}
$oc = getOS($_SERVER['HTTP_USER_AGENT']);
/////////////////////////////////// #64х64 ава
function avatar_path($id_user){
global $ava;
$ava=glob($_SERVER['DOCUMENT_ROOT'].'/files/ava/'.$id_user.'*');
if ($ava)return str_replace($_SERVER['DOCUMENT_ROOT'],'',$ava[0]);
else
return false;
}
///////////////////////////////////
function apicms_ava64($users) {
$ava = avatar_path($users);
if ($ava){
echo '<img src="'.$ava.'" alt="" width="64" height="64"/>';
}else{
#если ава не загружена то выводим эту
echo '<img src="/files/ava/0.png" width="64" height="64">';
}
}
///////////////////////////////////
function apicms_ava32($users) {
$ava = avatar_path($users);
if ($ava){
echo '<img src="'.$ava.'" alt="" width="32" height="32"/>';
}else{
#если ава не загружена то выводим эту
echo '<img src="/files/ava/0.png" width="32" height="32">';
}
}
///////////////////////////////////
function apicms_ava40($users) {
$ava = avatar_path($users);
if ($ava){
echo '<img src="'.$ava.'" alt="" width="40" height="40"/>';
}else{
#если ава не загружена то выводим эту
echo '<img src="/files/ava/0.png" width="40" height="40">';
}
}
///////////////////////////////////
#Вывод ошибок
function apicms_error($var){
if (!empty($var))echo '<div class="error"><a>'. $var .'</a></div>';
}
///////////////////////////////////
function apicms_foot(){
include_once 'ads_down.php';
$reg_count = mysql_num_rows(mysql_query("SELECT id FROM `users`"));
$tm_on = time()-600;
$onsus = mysql_result(mysql_query("SELECT COUNT(*) FROM `users` WHERE `activity` > '$tm_on'"), 0);
$us_last = mysql_fetch_array(mysql_query("select `login`,`id` from `users` ORDER BY id DESC limit 1"));
////////////////////////////////////////
echo '<div class="subhead"><table width="100%"><tr><td width="33%"><center><a href="/modules/all_profiles.php">Профили: '.$reg_count.' </a> <a href="/profile.php?id='.$us_last['id'].'">('.$us_last['login'].')</a> </center></td>
<td width="33%"><center><a href="/">Главная</a></center></td>
<td width="33%"><center><a href="/modules/online.php">Сейчас в сети: '.$onsus.'</a></center></td></tr></table></div>';
echo '<div class="foot"><center>';
echo '<a href="http://apicms.ru"><font color="FFFFFF">© Система управления APICMS</font></br>';///// можем менять на свое если есть лицензия
// фиксация времени начала генерации страницы
$begin = microtime();
// матрица начального времени с секундами и миллисекундами
$arrbegin = explode(" ",$begin);
// Полное начальное время
$allbegin = $arrbegin[1] + $arrbegin[0];
// фиксация времени останова
$stop = microtime();
// матрица времени останова с секундами и миллисекундами
$arrend = explode(" ",$stop);
// Полное время останова
$allend = $arrend[1] + $arrend[0];
// вычитание из конечного времени начального
$alltime = $allend - $allbegin;
// вывод в браузер времени генерации страницы
$format = " <font color='FFFFFF'>%f сек.</font>";
printf($format,$alltime);
echo '</center></a></div>';
}
?>