Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /***********************************************************
- * Форматтер цитат для проекта "Мудродум"
- * @author: Amarant
- **********************************************************/
- error_reporting(E_ALL);
- ini_set('display_errors', 1); // уровень ошибок
- // Включение сжатия HTML кода, если доступно.
- if (extension_loaded('gzip')) {
- ob_start('ob_gzhandler');
- }
- date_default_timezone_set(getParam('TIMEZONE')); // Настройки часового пояса
- $sitename = getParam('NAME');
- $siteversion = getParam('VERSION');
- $metakeywords = getParam('KEYWORDS');
- $metadescription = getParam('DESCRIPTION');
- $socdescription = getParam('SOCDESCRIPTION');
- $base = getParam('BASEDIR');
- $pp = getParam('NUMPP');
- $copydate = getParam('COPYDATE');
- /************************************************************/
- ob_start(); // Стартуем хедеры в буфер
- session_start(); // Стартуем сессию
- if ($siteversion == '') {
- $siteversion = '1';
- }
- if ($copydate != date('Y')) {
- $copydate = $copydate . '-' . date('Y');
- }
- // ФУНКЦИИ ТРЕТЬЕГО УРОВНЯ
- // Получение параметров сайта
- function getParam($param)
- {
- $settings = 'settings.ini';
- if (file_exists($settings))
- {
- $settings = parse_ini_file('settings.ini');
- if($settings[$param] != '')
- {
- return sanitize($settings[$param]);
- }
- }
- else
- {
- return 'The file '.$settings.' does not exist';
- }
- }
- // Обработка текста от вредных элементов (ВЫЗОВ ИЗ sanitize()! )
- function cleanInput($input)
- {
- $search = array(
- '@<script[^>]*?>.*?</script>@si', // javascript
- '@<[\/\!]*?[^<>]*?>@si', // HTML теги
- '@<style[^>]*?>.*?</style>@siU', // теги style
- '@<![\s\S]*?--[ \t\n\r]*>@' // многоуровневые комментарии
- );
- $output = preg_replace($search, '', $input);
- $output = preg_replace("~\s{2,}~", " ", trim($output));
- return $output;
- }
- // Убираем магические кавычки и проч.
- function sanitize($input)
- {
- if (is_array($input)) {
- foreach ($input as $var => $val) {
- $output[$var] = sanitize($val);
- }
- } else {
- if (get_magic_quotes_gpc()) {
- $input = stripslashes($input);
- }
- $output = cleanInput($input);
- }
- return $output;
- }
- // Проверка на длину строки
- function stringLength($data, $min_rang, $max_rang)
- {
- if (mb_strlen($data, 'utf-8') >= $min_rang && mb_strlen($data, 'utf-8') <= $max_rang) {
- return true;
- } else {
- return false;
- }
- }
- // Проверка была ли отправлена форма
- function form_sub($form_name)
- {
- if (!isset($_POST[$form_name])) {
- return false;
- }
- return true;
- }
- // ФУНКЦИИ ВТОРОГО УРОВНЯ
- // Обработка поля
- function prepareField($form_name, $min_rang, $max_rang)
- {
- $data = $_POST[$form_name];
- if (form_sub($form_name) == false) {
- return false;
- exit;
- } else {
- if (stringLength($data, $min_rang, $max_rang) == false) {
- return null;
- exit;
- } else {
- $data = sanitize($data);
- if (stringLength($data, $min_rang, $max_rang) == false) {
- return null;
- exit;
- } else
- return $data;
- }
- }
- }
- function Errors($error)
- {
- switch ($error) {
- case 404:
- return '<br /><br />Ошибка 404: Страница не найдена!<br /><a href="/">В начало...</a><br /><br />';
- break;
- case 'length':
- return 'Одно из полей слишком короткое или слишком длинное!<br />Попробуйте изменить вводимые данные.<br /><br />';
- break;
- case 'no':
- return 'Неизвестная ошибка. Что-то пошло не так.<br />Попробуйте изменить вводимые данные.<br /><br />';
- break;
- default:
- break;
- }
- }
- function selfURL()
- {
- if (!isset($_SERVER['REQUEST_URI']))
- $suri = $_SERVER['PHP_SELF'];
- else
- $suri = $_SERVER['REQUEST_URI'];
- $s = empty($_SERVER["HTTPS"]) ? '' : ($_SERVER["HTTPS"] == "on") ? "s" : "";
- $sp = strtolower($_SERVER["SERVER_PROTOCOL"]);
- $pr = substr($sp, 0, strpos($sp, "/")) . $s;
- $pt = ($_SERVER["SERVER_PORT"] == "80") ? "" : (":" . $_SERVER["SERVER_PORT"]);
- return $pr . "://" . $_SERVER['SERVER_NAME'] . $pt . $suri;
- }
- // ФУНКЦИИ ПЕРВОГО УРОВНЯ (именно в них вызов функций 2го уровня)
- // Функция записи поста в файл в должном виде
- function writePost($base_dir)
- {
- $name = prepareField('name', 3, 30);
- $text = prepareField('text', 10, 600);
- if ($name != '' && $text != '') {
- $data = $text . ' (' . $name . ')';
- $data = serialize($data);
- $data = $data . "\n";
- file_put_contents($base_dir, $data, FILE_APPEND);
- unset($data);
- } else
- return Errors('no');
- ;
- }
- // Чтение всех постов
- function readPosts($base_dir, $pp)
- {
- $data = file($base_dir);
- if ($data == '') {
- return null;
- } else {
- $i = 0;
- krsort($data);
- $posts_num = count($data);
- $start = isset($_GET['start']) && ctype_digit($_GET['start']) ? $_GET['start'] : 0;
- $posts = array_slice($data, $start, $pp);
- foreach ($posts as $post) {
- $post = unserialize($post);
- $db_posts[$i] = $post;
- $i++;
- }
- if (!isset($db_posts) or $db_posts == '') {
- return null;
- } else
- return $db_posts;
- }
- }
- function countPosts($base_dir, $pp)
- {
- $data = file($base_dir);
- if ($data == '') {
- return null;
- } else {
- $posts_num = count($data);
- return $posts_num;
- }
- }
- if (isset($_POST['name'])) {
- writePost($base);
- unset($_POST['name']);
- unset($_POST['text']);
- }
- function adminAuth()
- {
- $passhash = getParam('PASSHASH');
- if (isset($_SESSION['admin']) && $_SESSION['admin'] == $passhash)
- {
- if(isset($_GET['exit']))
- {
- session_destroy();
- Header("Location: /");
- }
- $logout = '<a href="?exit" id="logout">Выйти</a>';
- $form_mess = '<br /><form action="./" method="post"><div class="info">Осталось символов: <span id="counter">600 / 600</span></div><textarea name="text" id="text" rows="3" maxlength ="600" autofocus required placeholder="Скопируйте или напишите цитату в это поле. Максимальное количество символов - 600." onclick="length_check(600, \'text\', \'counter\')" onkeyup="length_check(600, \'text\', \'counter\')" class="area"></textarea><br /><input type="text" name="name" maxlength ="30" size="51" value="" required placeholder="Укажите автора цитаты" class="area" /><input type="reset" name="reset" value="Очистить" class="new"><input type="submit" name="submit" value="Добавить" class="new1"></form>';
- return $logout.$form_mess;
- }
- else
- {
- if(isset($_POST['pass']))
- {
- $pass = $_POST['pass'];
- $pass = sanitize($pass);
- $mdpass = md5($pass);
- if($mdpass == $passhash)
- {
- $_SESSION['admin'] = $passhash;
- Header("Location: /");
- }
- else
- {
- Header("Location: /");
- }
- }
- else
- {
- $auth_form = '<form name="auth" action="./" method="post">Пароль: <input type="password" id="pass" name="pass" autofocus required /><input type="submit" value="Войти" /></form>';
- return $auth_form;
- }
- }
- }
- $post = readPosts($base, $pp);
- include_once('core/template/main.html');
- ob_flush(); // Замыкаем хедеры
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement