Файл: sys/core/fnc.php
Строк: 341
<?
//Рег через Вконтакте
$client_id = '5068707'; // ID приложения
$client_secret = 'DWYVKDSPMMHVPq8f4JyL'; // Защищённый ключ
$redirect_uri = 'http://sfcbawun.client.cloudmoud.com/dev/vk.php'; // Адрес сайта
$response_type = 'code';
$display = 'touch';
//Рег через Одноклассники
$client_id_ok = '1154321408'; // Application ID
$public_key_ok = 'CBANIOMFEBABABABA'; // Публичный ключ приложения
$secret_key_ok = '9E02AAFFF5BFEA37691C1CF3'; // Секретный ключ приложения
$redirect_uri_ok = 'http://sfcbawun.client.cloudmoud.com/dev/ok.php'; // Ссылка на приложение
$response_type_ok = 'code';
$layout_ok = 'm'; //Внешний вид окна авторизации// `w`,`m`,`a`
$state_ok = '';
// фильтрация
function my_esc($str)
{
return mysql_real_escape_string($str);
}
define('HOME', 'http://'.$_SERVER['HTTP_HOST']); //адрес сайта
$autosalon_traning = '<div class="b-arrow-point" style="top: 279.923px; left: 749.577px; width: 27px; height: 27px;"></div>';
$race_traning = '<div class="b-arrow-point" style="top: 279.923px; left: 749.577px; width: 27px; height: 27px;"></div>';
$mission_traning = '<div class="b-arrow-point" style="top: 398.923px; left: 586.577px; width: 27px; height: 27px;"></div>';
// антиддос
if ($set['antidos']){// Защита от частых запросов с одного IP
$antidos[]=array('time'=>$time);$k_loads=0;
if (is_file(H.'sys/tmp/antidos_'.$iplong.'.dat')){
$antidos_dat=unserialize(file_get_contents(H.'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 (!isset($ban_ip_page) and mysql_result(mysql_query("SELECT COUNT(*) FROM `ban_ip` WHERE
`min` <= '$iplong' AND
`max` >= '$iplong'"), 0) != 0)
exit(header('Location: /dev/ban_ip.php'));
if (isset($ip2['cl']) and !isset($ban_ip_page) and
mysql_result(mysql_query("SELECT COUNT(*) FROM `ban_ip` WHERE
`min` <= '".ip2long($ip2['cl'])."' AND
`max` >= '".ip2long($ip2['cl'])."'"), 0) != 0)
exit(header('Location: /dev/ban_ip.php'));
if (!isset($ban_ip_page) AND isset($ip2['xff']) and mysql_result(mysql_query("SELECT COUNT(*) FROM `ban_ip` WHERE
`min` <= '".ip2long($ip2['xff'])."' AND
`max` >= '".ip2long($ip2['xff'])."'"), 0) != 0)
exit(header("Location: /dev/ban_ip.php"));
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(H.'sys/tmp/antidos_'.$iplong.'.dat', serialize($antidos));
@chmod(H.'sys/tmp/antidos_'.$iplong.'.dat', 0777);
}
// рекурсивное удаление папки
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");}}
// обновление данных
$timer_update=$set['time_update'];
$every_day_bonus=rand(1,3);
if(date("d")!=date("d",$timer_update))
{
if (function_exists('set_time_limit'))@set_time_limit(600); // ограничение на 10 минут
# очистка временной папки
$od=opendir(H.'sys/tmp/');
while ($rd=readdir($od)){
if (!preg_match('#^.#',$rd) && filectime(H.'sys/tmp/'.$rd)<$time-60*60*24){@delete_dir(H.'sys/tmp/'.$rd);
}
}
closedir($od);
# оптимизация таблиц
$tab=mysql_query('SHOW TABLES FROM '.$db_name);
for($i=0;$i<mysql_num_rows($tab);$i++)
{
mysql_query("OPTIMIZE TABLE `".mysql_tablename($tab,$i)."`");
}
# выполнение запросов
mysql_query("UPDATE `user` SET `fuel_today` = '0'");
mysql_query("DELETE FROM `lograce`");
mysql_query("DELETE FROM `lograce_turnir`");
mysql_query("DELETE FROM `quest_user`");
mysql_query("UPDATE `settings` SET `every_day_bonus` = '$every_day_bonus', `time_update` = '$time'");
}
// переносы строк
function br($msg,$br='<br />'){return preg_replace("#((<br( ?/?)>)|n|r)+#i",$br, $msg);}
// Вырезает все нечитаемые символы
function esc($text,$br=NULL){
if ($br!=NULL)
for ($i=0;$i<=31;$i++)$text=str_replace(chr($i), NULL, $text);
else{
for ($i=0;$i<10;$i++)$text=str_replace(chr($i), NULL, $text);
for ($i=11;$i<20;$i++)$text=str_replace(chr($i), NULL, $text);
for ($i=21;$i<=31;$i++)$text=str_replace(chr($i), NULL, $text);}
return $text;}
// вывод времени
function vremja($time=NULL)
{
global $user;
if ($time==NULL)$time=time();
$timep="".date("j M Y в H:i", $time)."";
$time_p[0]=date("j n Y", $time);
$time_p[1]=date("H:i", $time);
if ($time_p[0]==date("j n Y"))$timep=date("H:i:s", $time);
if ($time_p[0]==date("j n Y", time()-60*60*24))$timep="Вчера в $time_p[1]";
$timep=str_replace("Jan","Янв",$timep);
$timep=str_replace("Feb","Фев",$timep);
$timep=str_replace("Mar","Марта",$timep);
$timep=str_replace("May","Мая",$timep);
$timep=str_replace("Apr","Апр",$timep);
$timep=str_replace("Jun","Июня",$timep);
$timep=str_replace("Jul","Июля",$timep);
$timep=str_replace("Aug","Авг",$timep);
$timep=str_replace("Sep","Сент",$timep);
$timep=str_replace("Oct","Окт",$timep);
$timep=str_replace("Nov","Ноября",$timep);
$timep=str_replace("Dec","Дек",$timep);
return $timep;
}
// тайм аут
function time_out($time = 0) {
$h = floor($time/60/60);
$i = floor($time/60)-$h*60;
$s = $time-$h*60*60-$i*60;
$h = (strlen($h) == 1 ? '0'.$h : $h);
$i = (strlen($i) == 1 ? '0'.$i : $i);
$s = (strlen($s) == 1 ? '0'.$s : $s);
$out = $h.':'.$i.':'.$s;
return $out;
}
// только для зарегистрированых
function only_reg($link = NULL) {
global $user;
if (!isset($user))
{
if ($link==NULL)$link='/index.php?'.SID;
header("Location: $link");exit;}}
// только для незарегистрированых
function only_unreg($link = NULL) {
global $user;
if (isset($user)){
if ($link==NULL)$link='/index.php?'.SID;
header("Location: $link");exit;}}
// вывод ошибок
function err(){
global $err;
if (isset($err)){
if (is_array($err)){
foreach ($err as $key=>$value) {
echo "<table class='wdt b-message'><tbody><tr><td align='left'>$value</td></tr></tbody></table>";
}
}
else
{
echo "<table class='wdt b-message'><tbody><tr><td align='left'>$err</td></tr></tbody></table>";
}
}
}
// сохранение настроек системы
function save_settings($set){
unset($set['web']);
if ($fopen=@fopen(H.'sys/dat/settings_6.2.dat', 'w')){
@fputs($fopen, serialize($set));
@fclose($fopen);
@chmod(H.'sys/dat/settings_6.2.dat', 0777);
return true;}
else
return false;}
// генерация пароля
function passgen($k_simb=8, $types=3)
{
$password='';
$small='abcdefghijklmnopqrstuvwxyz';
$large='ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$numbers='1234567890';
mt_srand((double)microtime()*1000000);
for ($i=0; $i<$k_simb; $i++)
{
$type=mt_rand(1,min($types,3));
switch ($type)
{
case 3:
$password.=$large[mt_rand(0,25)];
break;
case 2:
$password.=$small[mt_rand(0,25)];
break;
case 1:
$password.=$numbers[mt_rand(0,9)];
break;
}
}
return $password;
}
$passgen=passgen();
########### BB Коды ###########
function BBcode($mes)
{
$mes = stripslashes($mes);
$mes = preg_replace('#[cit](.*?)[/cit]#si', '<div class="cit">1</div>', $mes);
$mes = preg_replace('#[a](.*?)[/a]#si', '<a href="1">1</a>', $mes);
$mes = preg_replace('#[img](.*?)[/img]#si', '<a href="1" class="cit">Нажмите, чтобы открыть</a>', $mes);
$mes = preg_replace('#[b](.*?)[/b]#si', '<span style="font-weight: bold;"> 1 </span>', $mes);
$mes = preg_replace('/[urls?=s?(['"]?)(?:http://)?(.*?)1](.*?)[/url]/', ' <a href="http://$2"> $3 </a> ', $mes);
$mes = preg_replace('#[black](.*?)[/black]#si', '<span style="color:#000000;">1</span>', $mes);
$mes = preg_replace('#[i](.*?)[/i]#si', '<i>1</i>', $mes);
$mes = preg_replace('#[u](.*?)[/u]#si', '<u>1</u>', $mes);
$mes = preg_replace('#[s](.*?)[/s]#si', '<s>1</s>', $mes);
$mes = preg_replace('#[red](.*?)[/red]#si', '<span style="color: red">1</span>', $mes);
$mes = preg_replace('#[green](.*?)[/green]#si', '<span style="color: green">1</span>', $mes);
$mes = preg_replace('#[blue](.*?)[/blue]#si', '<span style="color: blue">1</span>', $mes);
$mes = preg_replace("~(^|s|-|:| |()(http(s?)://|(www.))((S{25})(S{5,})(S{15})([^<s.,>)];'"!?]))~i", "\1<a href="http\3://\4\5">\4\6...\8\9</a>", $mes);
$mes = preg_replace("~(^|s|-|:|(| |xAB)(http(s?)://|(www.))((S+)([^<s.,>)];'"!?]))~i", "\1<a href="http\3://\4\5">\4\5</a>", $mes);
return $mes;
}
############ Смайлы ###########
function smiles($msg)
{
$msg = trim($msg);
$s = mysql_query("SELECT * FROM `smiles` ORDER BY `id` DESC") or die(mysql_error());
while($smile = mysql_fetch_array($s))
{
$msg = str_replace($smile['zamena'], ' <img src="/style/img/smiles/'.$smile['name'].'.png" alt=""/> ', $msg);
}
return $msg;
}
function anti_rek($msg)
{
$msg = trim($msg);
$s = mysql_query("SELECT * FROM `anti_reklama` ORDER BY `id` DESC") or die(mysql_error());
while($anti_rek = mysql_fetch_array($s))
{
$msg = str_replace($anti_rek['msg'], '<b class="red"/>'.$anti_rek['title'].'</b>', $msg);
}
return $msg;
}
function img_preg($arr)
{
return '<img src="http://'.$_SERVER['HTTP_HOST'].'/go.php?go='.base64_encode(html_entity_decode($arr[1])).'" alt="img" />';
}
function links_preg1($arr)
{
global $set;
if (preg_match('#^http://'.preg_quote($_SERVER['HTTP_HOST']).'#',$arr[1]) || !preg_match('#://#',$arr[1]))
return '<a href="'.$arr[1].'">'.$arr[2].'</a>';
else
return '<a'.($set['web']?' target="_blank"':null).' href="http://'.$_SERVER['HTTP_HOST'].'/go.php?go='.base64_encode(html_entity_decode($arr[1])).'">'.$arr[2].'</a>';
}
function links_preg2($arr)
{
global $set;
if (preg_match('#^http://'.preg_quote($_SERVER['HTTP_HOST']).'#',$arr[2]))
return $arr[1].'<a href="'.$arr[2].'">'.$arr[2].'</a>'.$arr[4];
else
return $arr[1].'<a href="http://'.$_SERVER['HTTP_HOST'].'/go.php?go='.base64_encode(html_entity_decode($arr[2])).'">'.$arr[2].'</a>'.$arr[4];
}
function links($msg)
{
global $set;
$msg=preg_replace_callback('/[imgs](.+)[/imgs]/isU', 'img_preg', $msg);
$msg=preg_replace_callback('/[url=(.+)](.+)[/url]/isU', 'links_preg1', $msg);
$msg=preg_replace_callback('~(^|s)([a-z]+://([^ rnt`'"]+))(s|$)~iu', 'links_preg2', $msg);
return $msg;
}
function strlen2($str)
{
$rus=array('й','ц','у','к','е','н','г','ш','щ','з','х','ъ','ф','ы','в','а','п','р','о','л','д','ж','э','я','ч','с','м','и','т','ь','б','ю','Й','Ц','У','К','Е','Н','Г','Ш','Щ','З','Х','Ъ','Ф','Ы','В','А','П','Р','О','Л','Д','Ж','Э','Я','Ч','С','М','И','Т','Ь','Б','Ю');
return strlen(str_replace($rus, '0', $str));
}
function tr_loads($in)
{
return preg_replace('#[^A-z0-9_-.()]+#ui', '_', $in);
}
function url($url)
{
$url2=preg_split('#&(amp;)?#', $url);
$url3=NULL;
for ($i=0;$i<count($url2);$i++)
{
$url4=explode('=', $url2[$i]);
if (isset($url4[1]))
$url3.=$url4[0].'='.urlencode($url4[1]);
else $url3.=$url4[0];
if ($i<count($url2)-1)$url3.='&';
}
return $url3;
}
function url2($url)
{
$url2=explode('/', $url);
for ($i=0;$i<sizeof($url2);$i++)
{
$url2[$i]=urlencode($url2[$i]);
}
return implode('/',$url2);
}
// функция обрабатывает текстовые строки перед выводом в браузер
// настоятельно не рекомундуется тут что-либо менять
function output_text($str,$br=1,$html=1,$anti_rek=1,$smiles=1,$links=1,$bbcode=1)
{
global $theme_ini;
if ($html)$str=htmlentities($str, ENT_QUOTES, 'UTF-8'); // преобразуем все к нормальному перевариванию браузером
if ($links)$str=links($str); // обработка ссылок
if ($anti_rek)
$str=anti_rek($str); // вставка смайлов
if ($smiles)
$str=smiles($str); // вставка смайлов
if ($bbcode)
{
$tmp_str=$str;
$str=bbcode($str); // обработка bbcode
}
if ($br)
$str=br($str); // переносы строк
return stripslashes($str); // возвращаем обработанную строку
}
// для форм \
function input_value_text($str){
return output_text($str,0,1,0,0,0);
}
// форматируем значения по 3 цифры
function m_format($i)
{
$i = number_format($i, 0, '', ''');
return $i;
}
/*
// тест защита от частых запросов
if(isset($_SESSION['add_scan']))
{
$res_scan=$time-$_SESSION['add_scan'];
if($res_scan<1)
{
header("Location: /dev/map.php");
exit;
}
}
$_SESSION['add_scan']=$time;
*/
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;
echo "<table class='wdt'>";
echo "<tr class='gray-table'>";
if ($page!=1)
{
echo "<td colspan='2' width='60px' style='border-top: 1px solid #000;'><form action ='".$link."page=1' method = 'post'>";
echo "<button type='submit' class='race-btn'><<</button></form></td>";
}
else
{
echo "<td colspan='2' width='60px' style='border-top: 1px solid #000;'>";
echo "<button class='inactive-btn'><<</button></td>";
}
if ($page>1)
{
echo "<td colspan='2' width='60px' style='border-top: 1px solid #000;'><form action ='".$link."page=".($page-1)."' method = 'post'>";
echo "<button type='submit' class='race-btn'><</button></form></td>";
}
else
{
echo "<td colspan='2' width='60px' style='border-top: 1px solid #000;'>";
echo "<button class='inactive-btn'><</button></td>";
}
echo "<td colspan='2' width='60px' style='border-top: 1px solid #000;' align='center' class='white'>$page/$k_page</td>";
if ($page<$k_page)
{
echo "<td colspan='2' width='60px' style='border-top: 1px solid #000;'>";
echo "<form action ='".$link."page=".($page+1)."' method = 'post'>";
echo "<button type='submit' class='race-btn'>></button></form></td>";
}
else
{
echo "<td colspan='2' width='60px' style='border-top: 1px solid #000;'>";
echo "<button class='inactive-btn'>></button></td>";
}
if ($page!=$k_page)
{
echo "<td colspan='2' width='60px' style='border-top: 1px solid #000;'><form action ='".$link."page=end' method = 'post'>";
echo "<button type='submit' class='race-btn'>>></button></form></td></tr></table>";
}
else
{
echo "<td colspan='2' width='60px' style='border-top: 1px solid #000;'>";
echo "<button class='inactive-btn'>>></button></form></td></tr></table>";
}
}
?>