View file system/function.php

File size: 11.94Kb
<?php
define('H', $_SERVER['DOCUMENT_ROOT']);
define('SYS', H.'/system');

session_name('GOsid');
session_start() or die('Session error');
ob_start();
/* Errors display */
ini_set('display_errors', '1');
ini_set('display_startup_errors', '1');
ini_set('error_reporting', E_ALL);
/* Connect DB */
if (file_exists(SYS.'/config.ini')) {
	$set = parse_ini_file(SYS.'/config.ini');
} else {
	echo 'Config file missing';
	exit;
}
$driver = new mysqli_driver();
$driver->report_mode = MYSQLI_REPORT_ALL ^ MYSQLI_REPORT_INDEX;
try {
	$db = new mysqli($set['dbhost'], $set['dbuser'], $set['dbpass'], $set['dbname']);
} catch (Exception $e) {
	echo '<img src="/assets/img/db_err.jpg" alt="шо?"></div>';
	exit;
}

/* Language */
$locale = isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) ? substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2) : 'ru';
if (($locale != 'ru' && 'ru_ru') && empty($_COOKIE['lang'])) {
	$language = 'en';
} else {
	$language = isset($_COOKIE['lang']) ? guard($_COOKIE['lang']) : 'ru';
}
if (file_exists(SYS.'/langs/'.$language.'.ini')) {
	$lang = parse_ini_file(SYS.'/langs/'.$language.'.ini');
} else {
	echo 'Language file missing';
}
/* Theme */
$theme = empty($_COOKIE['theme']) ? "_dark" : "";
/* Ip, user agent, page*/
$ip = input($_SERVER['REMOTE_ADDR']);
$ua = isset($_SERVER['HTTP_USER_AGENT']) ? input($_SERVER['HTTP_USER_AGENT']) : 'NULLED_USER_AGENT';
$curUrl = input($_SERVER['REQUEST_URI']);
/* Admin */
if (isset($_COOKIE['uslog']) and isset($_COOKIE['uspass'])) {
	$uslog = input($_COOKIE['uslog']);
	$uspass = input($_COOKIE['uspass']);
	$admin = $db->query("SELECT * FROM `admin` WHERE `login` = '$uslog' and `pass` = '$uspass' LIMIT 1")->fetch_assoc();
	if (isset($admin['id'])) {
		if ($admin['login'] != $uslog or $admin['pass'] != $uspass) {
			setcookie('uslog', '', time() - 86400*31);
			setcookie('uspass', '', time() - 86400*31);
		}
	}

	$adm = $db->query("SELECT * FROM `admin` WHERE `login` = '$uslog' and `pass`='$uspass' LIMIT 1")->fetch_assoc();
	if (isset($admin['id']) and $adm['login'] != $uslog or $adm['pass'] != $uspass) {
		setcookie('uslog', '', time() - 86400*31);
		setcookie('uspass', '', time() - 86400*31); 
	}
}
/* Users */
if (isset($_COOKIE['userid']) and isset($_COOKIE['pass'])) {
	$userid = input($_COOKIE['userid']);
	$pass = input($_COOKIE['pass']);
	$user = $db->query("SELECT * FROM `users` WHERE `id` = '$userid' and `password` = '$pass' LIMIT 1")->fetch_assoc();
	$db->query("UPDATE `users` SET `date_last` = '".time()."' WHERE `id` = '$userid'");
	if ($user['ip'] == null or $user['ip'] != $ip) {
		$db->query("UPDATE `users` SET `ip` = '".$ip."', `ua` = '".$ua."' WHERE `id` = '$userid'");
	}
	if (isset($user['id'])) {
		if ($user['id'] != $userid or $user['password'] != $pass) {
			setcookie('userid', '', time() - 86400*31);
			setcookie('pass', '', time() - 86400*31);
		}
	}

	$usr = $db->query("SELECT * FROM `users` WHERE `id` = '$userid' and `password`='$pass' LIMIT 1")->fetch_assoc();
	if (isset($user['id']) and $usr['id'] != $userid or $usr['password'] != $pass) {
		setcookie('userid', '', time() - 86400*31);
		setcookie('pass', '', time() - 86400*31); 
	}
}
/* Username */
if (isset($_COOKIE['username'])) {
    $_COOKIE['username'];
} else {
    $_COOKIE['username'] = null;
}
if (isset($user)) {
    $_COOKIE['username'] = $user['login'];
}
/* Device */
function isMobile() {
	global $ua;
	return preg_match('/(Android|iPod|iPhone|Symbian|WindowsPhone|WP7|WP8|Opera M|java|webOS|BlackBerry|Mobile|HTC_|Fennec|Avantgo|bolt|boost|cricket|docomo|fone|hiptop|mini|mobi|palm|phone|pie|tablet|up\.browser|up\.link|wos)/i', $ua);
}
function isBot() {
	global $ua;
	return preg_match('/(GOloadBot|Bot|compatible|Yandex|Google|Bingbot|Twitterbot|facebookexternalhit|Facebot|Slurp|Yahoo|DuckDuckBot|Baiduspider|ia_archiver|W3C_Validator|Validator.nu|PR-CY.RU|Chrome-Lighthouse|Mail.Ru|AhrefsBot|uCrawler|dotbot|MJ12bo|psbot|Aport|Liveinternet|Dataprovider|vkShare)/i', $ua);
}
function isApp() {
	global $ua;
	return preg_match('/(Dalvik|okhttp|AndroidDownloadManager)/i', $ua);
}
function isApi() {
	global $curUrl;
	return preg_match('/(\/api\/)/i', $curUrl);
}
if (isMobile()) {
	$device = '1';
} else {
	$device = '0';
}
if (isBot()) {
	$device = '2';
}
if (isApp()) {
	$device = '3';
}
if (isApi()) {
	if (!isApp()) {
		$device = '4';
	}
}
/* Guests */
$guest = $db->query("SELECT * FROM `guest` WHERE `ip` = '$ip' and `ua`= '$ua'")->fetch_assoc();
if ($guest == 0) {
	$db->query("INSERT INTO `guest` SET `ip` = '$ip', `ua` = '$ua', `perehodov` = '0', `gde` = '".$curUrl."', `time` = '".time()."', `device` = '$device'");
} else {
	$db->query("UPDATE `guest` SET `perehodov` = `perehodov` +1, `gde` = '".$curUrl."', `time` = '".time()."', `device` = '$device' WHERE `id` = '".$guest['id']."'");
}
/* Times */
function vremya($time = null) {
	global $language, $lang;
	if (!$time) $time = time();
	$data = date('j.n.y', $time);
	if ($time == time())
		$res = $lang['now'];
	elseif ($data == date('j.n.y'))
		$res = $lang['today'].' '.date('G:i', $time);
	elseif ($data == date('j.n.y', time() - 86400))
		$res = $lang['yesterday'].' '.date('G:i', $time);
	elseif ($data == date('j.n.y', time() + 86400))
		$res = $lang['tomorrow'].' '.date('G:i', $time);
	else {
		if ($language == 'en') {
			$m = array ('0', '\j\a\n', '\f\e\b', '\m\a\r', '\a\p\r', '\m\a\y', '\j\u\n', '\j\u\l', '\a\u\g', '\s\e\p', '\o\c\t', '\n\o\v', '\d\e\c');
			$res = date('j '.$m[date('n', $time)].' Y \a\t G:i', $time);
		} else {
			$m = array ('0', 'янв', 'фев', 'мар', 'апр', 'мая', 'июн', 'июл', 'авг', 'сен', 'окт', 'ноя', 'дек');
			$res = date('j '.$m[date('n', $time)].' Y в G:i', $time);
		}
	}
	return $res;
}
/* Units */
function sizer($size) {
	$o = 1;
	while ($size > 1024) {
		$size = round($size / 1024, 1);
		$o++;
	}
	switch ($o) {
		case (1):
			$o = 'b'; break;
		case (2):
			$o = 'Kb'; break;
		case (3):
			$o = 'Mb'; break;
		case (4):
			$o = 'Gb'; break;
	}
	return $size.$o;
}
/* Rounding count */
function count_round($var) {
	if ($var >= 1000) {
		$c = round($var);
		$c_number_format = number_format($c);
		$c_array = explode(',', $c_number_format);
		$c_parts = array('K', 'M', 'B', 'T');
		$c_count_parts = count($c_array) - 1;
		$rounded = $c;
		$rounded = $c_array[0].((int)$c_array[1][0] !== 0 ? '.'.$c_array[1][0]: '');
		$rounded .= $c_parts[$c_count_parts - 1];
		return $rounded;
	}
	return $var;
}
/* Pagination */
function page($k_page = 1) {
	$page = 1;
	$page = guard($page);
	$k_page = guard($k_page);
	if (isset($_GET['selection'])) {
		if ($_GET['selection'] == 'top')
			$page = guard(intval($k_page));
		elseif (is_numeric($_GET['selection']))
			$page = guard(intval($_GET['selection']));
	}
	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 pagination($link = '?', $k_page = 1, $page = 1, $sort = null) {
	if ($page < 1) $page = 1;
	$page = guard($page);
	$k_page = guard($k_page);
	echo '
			<ul class="menu pagination">';
	if ($page > 1) echo '
				<a class="pagination-arrow arrow-left" href="'.$link.'/'.($page-1).$sort.'"><i class="material-icons">keyboard_arrow_left</i></a>';
	else echo '
				<li class="pagination-arrow arrow-left"><i class="material-icons">keyboard_arrow_left</i></li>';
	if ($page != 1)
		echo '
				<a class="pagination-number" href="'.$link.'/1'.$sort.'">1</a>';
	else echo '
				<li class="pagination-number current-number">1</li>';
	for ($ot =- 2; $ot <= 2; $ot++) {
		if ($page + $ot > 1 && $page + $ot < $k_page) {
			if ($ot ==- 2 && $page + $ot > 2) echo '
				<li class="pagination-number">...</li>';
			if ($ot != 0) echo '
				<a class="pagination-number" href="'.$link.'/'.($page+$ot).$sort.'" >'.($page+$ot).'</a>';
			else echo '
				<li class="pagination-number current-number">'.($page+$ot).'</li>';
			if ($ot == 2 && $page + $ot < $k_page - 1) echo '
				<li class="pagination-number">...</li>';
		}
	}
	if ($page != $k_page) echo '
				<a class="pagination-number" href="'.$link.'/last'.$sort.'" >'.$k_page.'</a>';
	elseif ($k_page > 1) echo '
				<li class="pagination-number current-number">'.$k_page.'</li>';
	if ($page < $k_page) echo '
				<a class="pagination-arrow arrow-right" href="'.$link.'/'.($page+1).$sort.'"><i class="material-icons">keyboard_arrow_right</i></a>';
	else echo '
				<li class="pagination-arrow arrow-right"><i class="material-icons">keyboard_arrow_right</i></li>';
	echo '
			</ul>';
}
/* Errors*/
function error($var) {
    global $lang, $admin, $user;
    echo '
        <div class="menu">
            <center>
                <div><b>'.$var.'</b></div>
                <a onclick="window.history.back();">'.$lang['go_back'].'</a>
            </center>
        </div>
      </div>
';
	require_once SYS.'/foot.php';
	exit;
}
/* Filter */
function guard($var) {
	return htmlspecialchars(trim(stripslashes($var)));
}
/* Encrypt */
function encrypt($var) {
	return md5(base64_encode(md5($var)));
}
/* Input */
function input($var) {
    global $db;
	return $db->real_escape_string(guard($var));
}
/* Output */
function output($var) {
	return htmlentities($var);
}
/* Redirect */
function go($var) {
	header('Location: '.$var);
	exit;
}
/* Emoji */
function emoji($var) {
	$var = str_replace('#a01', '<img class="emoji" src="/assets/img/emoji/001.jpg">', $var);
	$var = str_replace('#a02', '<img class="emoji" src="/assets/img/emoji/002.jpg">', $var);
	$var = str_replace('#a03', '<img class="emoji" src="/assets/img/emoji/003.jpg">', $var);
	$var = str_replace('#a04', '<img class="emoji" src="/assets/img/emoji/004.jpg">', $var);
	$var = str_replace('#a05', '<img class="emoji" src="/assets/img/emoji/005.jpg">', $var);
	$var = str_replace('#a06', '<img class="emoji" src="/assets/img/emoji/006.jpg">', $var);
	$var = str_replace('#a07', '<img class="emoji" src="/assets/img/emoji/007.jpg">', $var);
	$var = str_replace('#a08', '<img class="emoji" src="/assets/img/emoji/008.jpg">', $var);
	$var = str_replace('#a09', '<img class="emoji" src="/assets/img/emoji/009.jpg">', $var);
	$var = str_replace('#y10', '<img class="emoji" src="/assets/img/emoji/010.jpg">', $var);
	$var = str_replace('#y11', '<img class="emoji" src="/assets/img/emoji/011.jpg">', $var);
	$var = str_replace('#y12', '<img class="emoji" src="/assets/img/emoji/012.jpg">', $var);
	$var = str_replace('#y13', '<img class="emoji" src="/assets/img/emoji/013.jpg">', $var);
	$var = str_replace('#y14', '<img class="emoji" src="/assets/img/emoji/014.jpg">', $var);
	$var = str_replace('#y15', '<img class="emoji" src="/assets/img/emoji/015.jpg">', $var);
	$var = str_replace('#y16', '<img class="emoji" src="/assets/img/emoji/016.jpg">', $var);
	$var = str_replace('#y17', '<img class="emoji" src="/assets/img/emoji/017.jpg">', $var);
	$var = str_replace('#y18', '<img class="emoji" src="/assets/img/emoji/018.jpg">', $var);
	$var = str_replace('#y19', '<img class="emoji" src="/assets/img/emoji/019.jpg">', $var);
	$var = str_replace('#z20', '<img class="emoji" src="/assets/img/emoji/020.jpg">', $var);
	$var = str_replace('#z21', '<img class="emoji" src="/assets/img/emoji/021.jpg">', $var);
	$var = str_replace('#z22', '<img class="emoji" src="/assets/img/emoji/022.jpg">', $var);
	return $var;
}
/* Auto removal */
if ($db->query('SELECT COUNT(*) FROM `file` WHERE `time` < '.time())->num_rows != 0) {
	$q = $db->query('SELECT * FROM `file` WHERE `time` < '.time());
	while ($file = $q->fetch_assoc()) {
		unlink(H.'/files/'.$file['file']);
		$db->query('DELETE FROM `file` WHERE `id` = '.$file['id']);
		$db->query('DELETE FROM `komm` WHERE `file` = '.$file['id']);
	}
}
/* Ads */
$ads_url = '/ads';
$ads_out = '/ads';
$ads_img = 'placeholder.png';
$ads_text = 'Купить рекламу';
/* Ban */
$ban = array(
    '83.220.238.111',
    '109.70.100.21',
    '35.0.127.52',
    '95.153.134.17',
    '89.146.108.211',
    '185.100.87.206',
    '23.129.64.155',
    '212.47.229.4'
);
$count = count($ban);
for ($i = 0; $i < $count; $i++) {
	if ($ip == $ban[$i]) {
		header('HTTP/2.0 403 Forbidden');
		die('Пошёл нахуй отсюда.');
	}
}

?>