Файл: youfone/guestbook/index.php
Строк: 673
<?php
error_reporting (0);
include('inc/sess.php');
include('inc/config.php');
include('inc/func_active.php');
include('inc/ipua.php');
include('inc/coockieid.php');
include('inc/coockiedan.php');
include('inc/adminaut.php');
include('inc/online.php');
include('inc/perehod.php');
include_once('../system/config.php');
include_once('../system/head.php');
if( !$auth )
{
if( isset($_GET['add']) ) // Страница добавления сообщения
{
$message = file('data/message.dat');
$is_id = false;
if( isset($_GET['id']) )
{
$_GET['id'] = (int) $_GET['id'];
if( array_key_exists($_GET['id'], $message) )
{
$m = explode('|', rtrim($message[$_GET['id']]));
$is_id = true;
}
}
$error = '';
if( isset($_POST['send']) )
{
$_POST['name'] = ( empty($_POST['name']) ? '' : clean($_POST['name'], Q_NAME) );
$_POST['email'] = ( empty($_POST['email']) ? '' : clean($_POST['email'], 20) );
$_POST['text'] = ( empty($_POST['text']) ? '' : clean($_POST['text'], Q_TEXT) );
$_POST['code'] = ( isset($_POST['code']) ? (int) $_POST['code'] : '' );
if( preg_match('/' . preg_quote("1|$ip|$ua", '/') . ( $_COOKIE['id'] ? '|' . preg_quote('2|' . $_COOKIE['id'], '/') : '' ) . '|' . preg_quote("3|$ip", '/') . '/', file_get_contents('data/ban.dat')) )
{
$error.= '<div><span class="green">- Вы заблокированы и не можете добавлять сообщения!</span></div>';
}
else
{
foreach( $admin as $v )
{
$admin_name[] = strtok($v, '|');
}
if( !$_POST['name'] )
{
$error.= '<div>- Вы не ввели имя.</div>';
}
elseif( !preg_match('/[;,~!:@&.?/[]()*+-=еёа-яa-z0-9]+/iu', $_POST['name']) )
{
$error.= '<div>- В имени обнаружены недопустимые символы.</div>';
}
elseif( in_array($_POST['name'], $admin_name) )
{
$error.= '<div><span class="green">- Нельзя писать от этого имени! Пожалуйста, придумайте себе другое.</span></div>';
}
if( $_POST['email'] && !preg_match('/^~?[.-a-zA-Z_]+@[.-a-zA-Z]+$/', $_POST['email']) )
{
$error.= '<div>- Вы ввели некорректный E-mail адрес.</div>';
}
if( !$_POST['text'] )
{
$error.= '<div>- Вы не ввели текст.</div>';
}
if( !isset($_SESSION['code']) )
{
exit('oops!');
}if( !$_POST['code'] )
{
$error.= '<div>- Вы не ввели проверочный код.</div>';
}
elseif( $_POST['code'] != $_SESSION['code'] )
{
$error.= '<div>- Вы неверно ввели проверочный код.</div>';
}
unset($_SESSION['code']);
}
// Если все верно, приступаем к записи сообщения
if( !$error )
{
// Загружаем файл с функциями
include('inc/func_not_active.php');
// Обрабатываем
$_POST['text'] = bbcodesmile(str_replace("rn", '<br/>', $_POST['text']));
// Транслитируем
if( isset($_POST['tr_name']) )
{
$_POST['name'] = translate($_POST['name']);
}
if( isset($_POST['tr_text']) )
{
$_POST['text'] = translate($_POST['text']);
}
// Если пишем определённому юзеру, то добавляем его имя в начало текста
if( $is_id )
{
$_POST['text'] = $m[1] . ', ' . $_POST['text'];
}
// Проверяем сообщение на одинаковость с последним сообщением
if( $message )
{
$search = explode('|', end($message));
if( $_POST['name'] == $search[1] && $_POST['text'] == $search[9] )
{
header('Location: ./' . ( SID ? '?' . SID : '' ));
exit;
}
}
// Записываем данные юзера в куки
setcookie('name', $_POST['name'], time() + 31536000);
setcookie('email', $_POST['email'], time() + 31536000);
setcookie('icq', $_POST['icq'], time() + 31536000);
// Удалялка старых сообщений
if( count($message) >= MAX_MESSAGE )
{
$message[0] = '';
}
// Записываем сообщение в файл
$message[] = 'user|' . $_POST['name'] . '|' . date('j.m') . '|' . date('H:i') . '|' . $_POST['email'] . '|'. $_POST['icq'] . "|$ua|$ip|" . $_COOKIE['id'] . '|' . $_POST['text'] . "|||rn";
puts('data/message.dat', implode($message), 'w');
header('Location: ./' . ( SID ? '?' . SID : '' ));
exit;
}
}
// Шапка
$title = 'Гостевая книга - добавить сообщение';
include_once('../system/head.php');
echo '<div class="title">Добавить сообщение</div>';
echo '<a class="link" href="?help' . ( $is_id ? '&id=' . $_GET['id'] : '' ) . '"><b>Помощь</b></a>' . "rn";
// Выводим ошибки, если есть
if( $error )
{
echo '<div class="b"><span class="red"><strong>Ошибка!</strong></span><br/>' . $error . '</div>' . "rn";
}
// Генерируем число для каптчи
$_SESSION['code'] = rand(1000, 9999);
// Форма ввода
echo '<div class="block"><form action="?add' . ( $is_id ? '&id=' . $_GET['id'] : '' ) . '" method="post">' . "rn",
'Имя: [' . Q_NAME . ']<br /><input type="text" name="name" value="' . ( $error ? $_POST['name'] : $_COOKIE['name'] ) . '" maxlength="' . Q_NAME . '" class="texta" size="16" /><br /><input type="checkbox" name="tr_name" /> Транслит<br />' . "rn",
'Email: [20]<br /><input type="text" name="email" value="' . ( $error ? $_POST['email'] : $_COOKIE['email'] ) . '" maxlength="20" class="text" size="16" /><br />' . "rn",
( $is_id ? '<strong>' . $m[1] . '</strong>,' : 'Текст:' ) . ' [' . Q_TEXT . ']<br /><textarea name="text" cols="15" rows="2" class="texta">' . ( $error ? $_POST['text'] : '' ) . '</textarea><br /><input type="checkbox" name="tr_text" /> Транслит<br />' . "rn",
'<img src="code/code.php?' . rand(1000, 9999) . ( SID ? '&' . SID : '' ) . '" alt="" width="65" height="25"/><br />Проверочное число:<br /><input type="text" name="code" maxlength="4" size="4" class="texta" /><br />' . "rn",
'<input type="submit" name="send" value="Написать" class="submit" />' . "rn",
'</form></div>' . "rn";
// Данные пользователя
if( $is_id )
{
echo '<div class="title"><strong>Данные пользователя</strong><br /></div>' . "rn",
'<div class="block">@-mail: ' . ( $m[4] && $m[4]{0} != '~' ? $m[4] : 'Не указано' ) . '<br />' . "rn",
'</div>' . "rn";
}
echo '<a class="links" href="./">Назад</a> <a class="links" href="/">На главную</a>';
}
elseif( isset($_GET['help']) ) // Страница помощи
{
$_GET['id'] = ( isset($_GET['id']) ? '&id=' . (int) $_GET['id'] : '' );
$title = 'Гостевая книга - помощь';
include_once('../system/head.php');
if( isset($_GET['smile']) ) // Страница смайлов
{
$smile = array_diff(array_map(create_function('$v', 'return substr($v, 0, -4);'), scandir('smile/')), array(''));
rsort($smile);
$all = count($smile);
$page = ( isset($_GET['page']) ? (int) $_GET['page'] : 1 );
$num_pages = ceil($all / Q_PSMILE);
$start = $page * Q_PSMILE - Q_PSMILE;
if( $page > $num_pages || $page < 1 )
{
$page = 1;
$start = 0;
}
echo '<div class="title"><b>Смайлы</b></a></div>' . "rn";
// Выводим
if( $all )
{
echo '<div class="block">' . "rn";
for( $i = $all - $start - 1; $i >= $all - $start - Q_PSMILE && isset($smile[$i]); $i-- )
{
echo ':' . $smile[$i] . ': <img src="smile/' . $smile[$i] . '.gif" alt=":' . $smile[$i] . ':" /><br />' . "rn";
}
echo '</div>' . "rn";
// Навигация
echo '<div class="block">'. ( $num_pages >= 10 ? '<a class="links" href="?go&back=' . $page . '">Стр.</a>' : 'Стр.' );
for( $pr = '', $i = 1; $i <= $num_pages; $i++ )
{
echo $pr = (($i == 1 || $i == $num_pages || abs($i - $page) < 3) ? ($i == $page ? " [$i] " : ' <a class="links" href="./?help&smile' . $_GET['id'] . '&page=' . $i . '">' . $i . '</a> ') : (($pr == ' .. ' || $pr == '') ? '' : ' .. '));
}
}
else
{
echo '<div class="block">Смайлов нет.</div>' . "rn",
'<div class="block">Стр. [1]</div>';
}
echo '</div>';
echo ' <a class="links" href="?help' . $_GET['id'] . '">Помощь</a> <a class="links" href="./">Гостевая</a> <a class="links" href="/">Главная</a>';
}
elseif( isset($_GET['bbcode']) ) // Страница ббкодов
{
echo '<div class="title"><b>BB коды</b></div>' . "rn",
'<div class="block">' . "rn",
'<strong>[b]Текст[/b]</strong><br />' . "rn",
'<font color="red">[red]Текст[/red]</font><br />' . "rn",
'<font color="green">[green]Текст[/green]</font><br />' . "rn",
'<font color="blue">[blue]Текст[/blue]</font><br />' . "rn",
'[url=http://URL-адрес]название[/url]' . "rn",
'</div>';
echo ' <a class="links" href="?help' . $_GET['id'] . '">Помощь</a> <a class="links" href="./">Гостевая</a> <a class="links" href="/">Главная</a>';
}
elseif( isset($_GET['translate']) ) // Страница с правилами транслита
{
echo '<div class="title"><b>Правила транслита</b></div>' . "rn",
'<div class="block">',
'А - A, a - a<br />',
'Б - B, б - b<br />',
'В - V, в - v<br />',
'Г - G, г - g<br />',
'Д - D, д - d<br />',
'Е - E, е - e<br />',
'Ё - YO Yo, ё - yo<br />',
'Ж - ZH Zh, ж - zh<br />',
'З - Z, з - z<br />',
'И - I, и - i<br />',
'Й - J, й - j<br />',
'К - K, к - k<br />',
'Л - L, л - l<br />',
'М - M, м - m<br />',
'Н - N, н - n<br />',
'О - O, о - о<br />',
'П - P, п - p<br />',
'Р - R, р - r<br />',
'С - S, с - s<br />',
'Т - T, т - t<br />',
'У - U, у - u<br />',
'Ф - F, ф - f<br />',
'Х - H X, х - h x<br />',
'Ц - C, ц - c<br />',
'Ч - CH Ch, ч - ch<br />',
'Ш - SH Sh W, ш - sh w<br />',
'Щ - SHC Shc, щ - shc<br />',
'Ь - Q, ь - q ' (одн. кавычка)<br />',
'Ы - YI Yi, ы - yi<br />',
'Ъ - QQ Qq, ъ - qq '' (2 одн. кавычки)<br />',
'Э - YE Ye, э - ye<br />',
'Ю - YU Yu, ю - yu<br />',
'Я - YA Ya, я - ya<br/><br />',
'Если Вам необходимо, чтобы какая-то часть текста не транслитировалась, заключите её в скобки <strong>[]</strong>.<br />Пример: Adres sajta [http://YouFone.ru] транслитируется как: Адрес сайта http://YouFone.ru',
'</div>';
echo ' <a class="links" href="?help' . $_GET['id'] . '">Помощь</a> <a class="links" href="./">Гостевая</a> <a class="links" href="/">Главная</a>';
}
else // Основная страница помощи
{
echo '<div class="title"><b>Раздел помощи</b></div>';
echo '<a class="link" href="?help&smile' . $_GET['id'] . '">» Смайлы</a>';
echo '<a class="link" href="?help&bbcode' . $_GET['id'] . '">» BB коды</a>';
echo '<a class="link" href="?help&translate' . $_GET['id'] . '">» Правила транслита</a><div class="block">' . "rn",
'Имя, Текст и Проверочное число обязательны для заполнения.<br /><br />' . "rn",
'Если Вы не хотите, чтобы Ваш Email был виден другим пользователям, предваряйте их символом <strong>~</strong>.<br />' . "rn",
'Пример:<br />' . "rn",
'~YouFone@YouFone.ru<br />' . "rn",
'Тогда ваши данные, кроме администрации, никто не увидит.</div>' . "rn",
'<a class="links" href="?add' . $_GET['id'] . '">Назад</a> <a class="links" href="./">Гостевая</a> <a class="links" href="/">Главная</a>';
}
}
elseif( isset($_GET['go']) ) // Страница перехода на страницу (страница перехода на страницу... бгг)
{
$title = 'Гостевая книга - Переход';
include_once('../system/head.php');
echo '<div class="title"><b>Перейти на страницу</b></div>' . "rn",
'<div class="block"><form action="" method="get"><fieldset>' . "rn",
'Стр. <input type="text" name="page" size="4" class="texta" />' . "rn",
'<input type="submit" value="Go" class="submit" />' . "rn",
'</fieldset></form></div>' . "rn",
'<a class="links" href="?page=' . ( isset($_GET['back']) ? (int) $_GET['back'] : 1 ) . '">Назад</a>';
}
elseif( isset($_GET['admin']) ) // Страница авторизации
{
$error = '';
if( isset($_REQUEST['send']) )
{
$_REQUEST['login'] = ( isset($_REQUEST['login']) ? (string) $_REQUEST['login'] : '' );
$_REQUEST['password'] = ( isset($_REQUEST['password']) ? (string) $_REQUEST['password'] : '' );
foreach( $admin as $v )
{
$admin_name[] = strtok($v, '|');
}
$k = array_search($_REQUEST['login'], $admin_name);
if( !$_REQUEST['login'] || !$_REQUEST['password'] )
{
$error.= '<div>- Вы не ввели логин или пароль.</div>';
}
elseif( $k === false || $_REQUEST['password'] != $password )
{
$error.= '<div>- Вы неверно ввели логин или пароль.</div>';
}
else
{
$admin = explode('|', $admin[$k]);
$_SESSION['admin_name'] = $admin[0];
$_SESSION['admin_email'] = $admin[1];
$_SESSION['admin_icq'] = $admin[2];
header('Location: ./' . ( SID ? '?' . SID : '' ));
exit;
}
}
// Шапка
$title = 'Гостевая книга - Aдминка';
include_once('../system/head.php');
echo '<div class="title"><b>Админка</b></div>';
// Выводим ошибки, если есть
if( $error )
{
echo '<div class="b"><span class="red"><strong>Ошибка!</strong></span><br />' . $error . '</div>';
}
// Форма ввода
echo '<div class="block"><form action="?admin" method="post">' . "rn",
'Логин:<br /><input type="text" name="login" class="texta" /><br />' . "rn",
'Пароль:<br /><input type="password" name="password" class="texta" /><br />' . "rn",
'<input type="submit" name="send" value="Войти" class="submit" />' . "rn",
'</form></div>' . "rn",
'<a class="links" href="./">Назад</a> <a class="links" href="/">На главную</a>';
}
else // Главная
{
$message = file('data/message.dat');
$all = count($message);
$_GET['page'] = ( isset($_GET['page']) ? (int) $_GET['page'] : 1 );
$num_pages = ceil($all / U_Q_MESSAGE);
$start = $_GET['page'] * U_Q_MESSAGE - U_Q_MESSAGE;
if( $_GET['page'] > $num_pages || $_GET['page'] < 1 )
{
$_GET['page'] = 1;
$start = 0;
}
// Шапка
$title = 'Гостевая книга';
include_once('../system/head.php');
echo '<div class="title">Гостевая книга</div>';
echo '<a class="link" href="?add">Добавить сообщение</a>' . "rn";
// Выводим сообщения
if( $all )
{
for( $i = $all - $start - 1; $i >= $all - $start - U_Q_MESSAGE && isset($message[$i]); $i-- )
{
$m = explode('|', rtrim($message[$i]));
echo '<div class="' . ( $i % 2 == 0 ? 'block' : 'block' ) . '"><span class="' . $m[0] . '"><strong><a href="?add&id=' . $i . '">' . $m[1] . '</a></strong></span> <span class="aa">' . today($m[2]) . ', ' . $m[3] . '</span><br />' . $m[9] . ( $m[10] ? '<div class="answer"><span class="red"><strong>Ответ</strong></span> <span class="aa">' . today($m[11]) . ', ' . $m[12] . '</span><br />' . $m[10] . '</div>' : '' ) . '</div>' . "rn";
}
// Навигация
echo '<div>' . ( $num_pages >= 10 ? '<a class="links" href="?go&back=' . $_GET['page'] . '">Стр.</a>' : 'Стр.' );
for( $pr = '', $i = 1; $i <= $num_pages; $i++ )
{
echo $pr = (($i == 1 || $i == $num_pages || abs($i - $_GET['page']) < 3) ? ($i == $_GET['page'] ? " [$i] " : ' <a class="links" href="?page=' . $i . '">' . $i . '</a> ') : (($pr == ' .. ' || $pr == '') ? '' : ' .. '));
}
}
else
{
echo '<div class="a">Сообщений нет.</div>' . "rn",
'<div class="bottom">Стр. [1]';
}
echo '<br/><a class="link" href="/">На главную</a>';
}
include '../system/foot.php';
exit;
}
// Страницы (админ-панель)
if( isset($_GET['add']) ) // Страница добавления сообщения/ответа
{
include('inc/func_not_active.php');
$message = file('data/message.dat');
$is_id = false;
if( isset($_GET['id']) )
{
$_GET['id'] = (int) $_GET['id'];
if( array_key_exists($_GET['id'], $message) )
{
$m = explode('|', rtrim($message[$_GET['id']]));
$is_id = true;
}
}
$_GET['back'] = ( isset($_GET['back']) ? (int) $_GET['back'] : 1 );
if( isset($_POST['send']) )
{
if( empty($_POST['text']) )
{
$_POST['text'] = '';
}
else
{
$_POST['text'] = bbcodesmile(str_replace("rn", '<br/>', clean($_POST['text'], Q_TEXT)));
if( isset($_POST['tr_text']) )
{
$_POST['text'] = translate($_POST['text']);
}
}
// Если добавляем ответ админа
if( $is_id )
{
$m[10] = &$_POST['text'];
$m[11] = '';
$m[12] = '';
if( $_POST['text'] )
{
$m[11] = date('j.m');
$m[12] = date('H:i');
}
$message[$_GET['id']] = implode('|', $m) . "rn";
puts('data/message.dat', implode($message), 'w');
header('Location: ./?page=' . $_GET['back'] . ( SID ? '&' . SID : '' ));
exit;
}
// Если пишем как обычное сообщение
if( $_POST['text'] )
{
// Проверяем сообщение на одинаковость
if( $message )
{
$search = explode('|', end($message));
if( $_SESSION['admin_name'] == $search[1] && $_POST['text'] == $search[9] )
{
header('Location: ./' . ( SID ? '?' . SID : '' ));
exit;
}
}
// Удалялка старых сообщений
if( count($message) >= MAX_MESSAGE )
{
$message[0] = '';
}
// Записываем сообщение в файл
$message[] = 'admin|' . $_SESSION['admin_name'] . '|' . date('j.m') . '|' . date('H:i') . '|' . $_SESSION['admin_email'] . '|' . $_SESSION['admin_icq'] . '|' . $ua . '|' . $ip . '|' . $_COOKIE['id'] . '|' . $_POST['text'] . "|||rn";
puts('data/message.dat', implode($message), 'w');
header('Location: ./' . ( SID ? '?' . SID : '' ));
exit;
}
}
// Выводим
$title = 'Админ - Добавить сообщение';
include_once('../system/head.php');
echo '<div class="title">Админка</div>';
if( $is_id ) // Если отвечаем на сообщение
{
echo '<a class="link" href="?help&id=' . $_GET['id'] . '&back=' . $_GET['back'] . '">Помощь</a>' . "rn",
'<div class="block"><form action="?add&id=' . $_GET['id'] . '&back=' . $_GET['back'] . '" method="post">' . "rn",
'Текст: [' . Q_TEXT . ']<br /><textarea name="text" cols="15" rows="2" class="text">' . edittext($m[10]) . '</textarea><br /><input type="checkbox" name="tr_text" /> Транслит<br />' . "rn",
'<input type="submit" name="send" value="' . ( $m[10] ? 'Сохранить' : 'Ответить' ) . '" class="submit" /></form></div>' . "rn",
'<div class="block"><strong>' . $m[1] . '</strong><br />' . $m[9] . '<br />' . "rn",
'<strong>Данные пользователя</strong> <a href="?edit&id=' . $_GET['id'] . '">[Ред]</a><br />' . "rn",
'<br/><b>E-mail</b> ' . ( $m[4] ? $m[4] : 'Не указано' ) . '<br /></div';
}
else // Если просто пишем
{
echo '<a class="link" href="?help">Помощь</a>' . "rn",
'<div class="block"><form action="?add" method="post">' . "rn",
'Текст: [' . Q_TEXT . ']<br /><textarea name="text" cols="15" rows="2" class="texta"></textarea><br /><input type="checkbox" name="tr_text" /> Транслит<br />' . "rn",
'<input type="submit" name="send" value="Написать" class="submit" /></form></div>';
}
echo "rn" . '<a class="links" href="./">В гостевую</a> <a class="links" href="?exit">Выход!</a>';
}
elseif( isset($_GET['edit']) ) // Страница редактирования данных юзера
{
$message = file('data/message.dat');
$_GET['id'] = ( isset($_GET['id']) ? (int) $_GET['id'] : '' );
if( !array_key_exists($_GET['id'], $message) )
{
exit('Нет сообщения с таким ID'ом.');
}
$m = explode('|', rtrim($message[$_GET['id']]));
include('inc/func_not_active.php');
$error = '';
if( isset($_POST['send']) )
{
$_POST['name'] = ( empty($_POST['name']) ? '' : clean($_POST['name'], Q_NAME) );
$_POST['email'] = ( empty($_POST['email']) ? '' : clean($_POST['email'], 20) );
$_POST['text'] = ( empty($_POST['text']) ? '' : clean($_POST['text'], Q_TEXT) );
if( !$_POST['name'] )
{
$error.= '<div>- Вы не ввели имя.</div>';
}
elseif( !preg_match('/[;,~!:@&.?/[]()*+-=еёа-яa-z0-9]+/iu', $_POST['name']) )
{
$error.= '<div>- В имени обнаружены недопустимые символы.</div>';
}
if( $_POST['email'] && !preg_match('/^~?[.-a-zA-Z_]+@[.-a-zA-Z]+$/', $_POST['email']) )
{
$error.= '<div>- Вы ввели некорректный E-mail адрес.</div>';
}
if( !$_POST['text'] )
{
$error.= '<div>- Вы не ввели текст.</div>';
}
if( !$error )
{
// Обрабатываем
$_POST['text'] = bbcodesmile(str_replace("rn", '<br/>', $_POST['text']));
// Транслитируем
if( isset($_POST['tr_name']) )
{
$_POST['name'] = translate($_POST['name']);
}
if( isset($_POST['tr_text']) )
{
$_POST['text'] = translate($_POST['text']);
}
foreach( $admin as $v )
{
$admin_name[] = strtok($v, '|');
}
// Записываем сообщение в файл
error_reporting (0);
$m[0] = ( in_array($_POST['name'], $admin_name) ? 'admin' : 'user' );
$m[1] = &$_POST['name'];
$m[4] = &$_POST['email'];
$m[9] = &$_POST['text'];
$message[$_GET['id']] = implode($m);
$puts('data/message.dat', implode($message), 'w');
header('Location: ./' . ( SID ? '?' . SID : '' ));
exit;
}
}
// Шапка
$title = 'Админ - Редактирование сообщения';
include_once('../system/head.php');
echo '<div class="title"><b>Редактирование сообщения</b></div>' . "rn";
// Если появились ошибки, выводим
if( $error )
{
echo '<div class="b"><span class="red"><strong>Ошибка!</strong></span><br />' . $error . '</div>' . "rn";
}
// Форма ввода
echo '<div class="block"><form action="?edit&id=' . $_GET['id'] . '" method="post">' . "rn",
'Имя: [' . Q_NAME . ']<br /><input type="text" name="name" value="' . ( $error ? $_POST['name'] : $m[1] ) . '" maxlength="' . Q_NAME . '" size="15" class="texta" /><br /><input type="checkbox" name="tr_name" />Транслит<br />' . "rn",
'Email: [20]<br /><input type="text" name="email" value="' . ( $error ? $_POST['email'] : $m[4] ) . '" maxlength="20" size="15" class="text" /><br />' . "rn",
'Текст: [' . Q_TEXT . ']<br /><textarea name="text" cols="15" rows="2" class="texta">' . ( $error ? $_POST['text'] : edittext($m[9]) ) . '</textarea><br /><input type="checkbox" name="tr_text" />Транслит<br />' . "rn",
'<input type="submit" name="send" value="Сохранить" class="submit" />' . "rn",
'</form></div>' . "rn",
'<a class="links" href="?add&id=' . $_GET['id'] . '">Назад</a> <a class="links" href="./">В гостевую</a> <a class="links" href="?exit">Выход</a>';
}
elseif( isset($_GET['ban']) ) // Страница с списком забаненых
{
$ban = file('data/ban.dat');
if( isset($_REQUEST['send']) )
{
// Выборочное удаление заблокированых
if( !empty($_POST['id']) && is_array($_POST['id']) )
{
puts('data/ban.dat', implode(array_diff_key($ban, array_flip($_POST['id']))), 'w');
header('Location: ./?ban&page=' . ( isset($_POST['back']) ? (int) $_POST['back'] : 1 ) . ( SID ? '&' . SID : '' ));
exit;
}
// Полная очистка заблокированых
if( isset($_GET['clear']) )
{
puts('data/ban.dat', '', 'w');
header('Location: ./?ban' . ( SID ? '&' . SID : '' ));
exit;
}
}
$all = count($ban);
$_GET['page'] = ( isset($_GET['page']) ? (int) $_GET['page'] : 1 );
$num_pages = ceil($all / Q_PBAN);
$start = $_GET['page'] * Q_PBAN - Q_PBAN;
if( $_GET['page'] > $num_pages || $_GET['page'] < 1 )
{
$_GET['page'] = 1;
$start = 0;
}
// Шапка
$title = 'Админ - Банлист';
include_once('../system/head.php');
echo '<div class="title"><b>Банлист [' . $all . ']</b></div>' . "rn";
// Выводим
if( $all )
{
echo '<form action="?ban" method="post"><input type="hidden" name="back" value="' . $_GET['page'] . '" />' . "rn";
for( $i = $all - $start - 1; $i >= $all - $start - Q_PBAN && isset($ban[$i]); $i-- )
{
$b = explode('|', rtrim($ban[$i]));
echo '<div class="' . ( $i % 2 == 0 ? 'block' : 'block' ) . '">';
if( $b[0] == 1 ) // Если IP+UA
{
echo $b[1] . '/' . strtok($b[2], '/') . '<br />';
}
elseif( $b[0] == 2 ) // Если Cookie
{
echo 'Cookie ID<br />';
}
else // Иначе IP
{
echo $b[1] . '<br />';
}
echo '<input type="checkbox" name="id[]" value="' . $i . '" /></div>' . "rn";
}
// Навигация
echo '<div class="block">' . ( $num_pages >= 10 ? '<a class="links" href="?go&back=' . $_GET['page'] . '">Стр.</a>' : 'Стр.' );
for( $pr = '', $i = 1; $i <= $num_pages; $i++ )
{
echo $pr = (($i == 1 || $i == $num_pages || abs($i - $_GET['page']) < 3) ? ($i == $_GET['page'] ? " [$i] " : ' <a class="links" href="?ban&page=' . $i . '">' . $i . '</a> ') : (($pr == ' .. ' || $pr == '') ? '' : ' .. '));
}
echo '</div>' . "rn",
'<div class="block"><input type="submit" name="send" value="Удалить" class="submit" /> <a href="?ban&send&clear"> Очистить</a></div></form>' . "rn",
'<div class="bottom">';
}
else
{
echo '<div class="block">Список заблокированных пуст.</div>' . "rn",
'<div>Стр. [1] ';
}
echo '<a class="links" href="./">В гостевую</a> <a class="links" href="?exit">Выход!</a>';
}
elseif( isset($_GET['online']) ) // Страница онлайн
{
$online = file('data/online.dat');
$all = count($online);
$_GET['page'] = ( isset($_GET['page']) ? (int) $_GET['page'] : 1 );
$num_pages = ceil($all / Q_PONLINE);
$start = $_GET['page'] * Q_PONLINE - Q_PONLINE;
// Проверка номера страницы
if( $_GET['page'] > $num_pages || $_GET['page'] < 1 )
{
$_GET['page'] = 1;
$start = 0;
}
$title = 'Онлайн';
include_once('../system/head.php');
echo '<div class="title">Онлайн [' . $all . ']</div>' . "rn";
// Выводим
for( $i = $all - $start - 1; $i >= $all - $start - Q_PONLINE && isset($online[$i]); $i-- )
{
$o = explode('|', rtrim($online[$i]));
echo '<div class="' . ( $i % 2 == 0 ? 'block' : 'block' ) . '">' . ( $o[1] ? '<strong>' . $o[1] . '</strong>' : 'Неизвестно' ) . '<br />' . strtok($o[2], '/') . ', ' . $o[3] . '</div>' . "rn";
}
// Навигация
echo '<div>' . ( $num_pages >= 10 ? '<a class="links" href="?go&back=' . $_GET['page'] . '">Стр.</a> ' : 'Стр. ' );
for( $pr = '', $i = 1 ; $i <= $num_pages ; $i++ )
{
echo $pr = (($i == 1 || $i == $num_pages || abs($i - $_GET['page']) < 3) ? ($i == $_GET['page'] ? " [$i] " : ' <a class="links" href="?online&page=' . $i . '">' . $i . '</a> ') : (($pr == ' .. ' || $pr == '') ? '' : ' .. '));
}
echo ' <a class="links" href="./">В гостевую</a> <a class="links" href="?exit">Выход!</a></div>';
}
elseif( isset($_GET['help']) ) // Страница помощи
{
$id_back = ( isset($_GET['id'], $_GET['back']) ? '&id=' . (int) $_GET['id'] . '&back=' . (int) $_GET['back'] : '' );
$title = 'Админ - Помощь';
include_once('../system/head.php');
if( isset($_GET['smile']) )
{
$smile = array_diff(array_map(create_function('$v', 'return substr($v, 0, -4);'), scandir('smile/')), array(''));
rsort($smile);
$all = count($smile);
$_GET['page'] = ( isset($_GET['page']) ? (int) $_GET['page'] : 1 );
$num_pages = ceil($all / Q_PSMILE);
$start = $_GET['page'] * Q_PSMILE - Q_PSMILE;
// Проверка номера страницы
if( $_GET['page'] > $num_pages || $_GET['page'] < 1 )
{
$_GET['page'] = 1;
$start = 0;
}
echo '<div class="title"><b>Смайлы</b></a></div>' . "rn";
// Выводим
if( $all )
{
echo '<div class="block">' . "rn";
for( $i = $all - $start - 1; $i >= $all - $start - Q_PSMILE && isset($smile[$i]); $i-- )
{
echo ':' . $smile[$i] . ': <img src="smile/' . $smile[$i] . '.gif" alt=":' . $smile[$i] . ':" /><br />' . "rn";
}
echo '</div>' . "rn";
// Навигация
echo '<div class="block">' . ( $num_pages >= 10 ? '<a class="links" href="?go&back=' . $_GET['page'] . '">Стр.</a> ' : 'Стр. ' );
for( $pr = '', $i = 1; $i <= $num_pages; $i++ )
{
echo $pr = (($i == 1 || $i == $num_pages || abs($i - $_GET['page']) < 3) ? ($i == $_GET['page'] ? " [$i] " : ' <a href="?help&smile' . $id_back . '&page=' . $i . '">' . $i . '</a> ') : (($pr == ' .. ' || $pr == '') ? '' : ' .. '));
}
}
else
{
echo '<div class="block">Смайлов нет.</div>' . "rn",
'<div class="bottom">Стр. [1]';
}
echo '</div></div><a class="links" href="?help' . $id_back . '">Назад</a> <a class="links" href="./">В гостевую</a> <a class="links" href="?exit">Выход!</a></div>';
}
elseif( isset($_GET['bbcode']) )
{
echo '<div class="title"><b>ББ коды</b></div>' . "rn",
'<div class="block">' . "rn",
'[url=http://адрес]Название[/url]<br />' . "rn",
'<strong>[b]Текст[/b]</strong><br />' . "rn",
'<span class="red">[red]Текст[/red]</span><br />' . "rn",
'<span class="green">[green]Текст[/green]</span><br />' . "rn",
'<span class="blue">[blue]Текст[/blue]</span>' . "rn",
'</div>' . "rn",
'<a class="links" href="?help' . $id_back . '">Назад</a> <a class="links" href="./">В гостевую</a> <a class="links" href="?exit">Выход!</a></div>';
}
elseif( isset($_GET['translate']) )
{
echo '<div class="title"><b>Правила транслита</b></div>' . "rn",
'<div class="block">',
'А - A, a - a<br />',
'Б - B, б - b<br />',
'В - V, в - v<br />',
'Г - G, г - g<br />',
'Д - D, д - d<br />',
'Е - E, е - e<br />',
'Ё - YO Yo, ё - yo<br />',
'Ж - ZH Zh, ж - zh<br />',
'З - Z, з - z<br />',
'И - I, и - i<br />',
'Й - J, й - j<br />',
'К - K, к - k<br />',
'Л - L, л - l<br />',
'М - M, м - m<br />',
'Н - N, н - n<br />',
'О - O, о - о<br />',
'П - P, п - p<br />',
'Р - R, р - r<br />',
'С - S, с - s<br />',
'Т - T, т - t<br />',
'У - U, у - u<br />',
'Ф - F, ф - f<br />',
'Х - H X, х - h x<br />',
'Ц - C, ц - c<br />',
'Ч - CH Ch, ч - ch<br />',
'Ш - SH Sh W, ш - sh w<br />',
'Щ - SHC Shc, щ - shc<br />',
'Ь - Q, ь - q ' (одн. кавычка)<br />',
'Ы - YI Yi, ы - yi<br />',
'Ъ - QQ Qq, ъ - qq '' (2 одн. кавычки)<br />',
'Э - YE Ye, э - ye<br />',
'Ю - YU Yu, ю - yu<br />',
'Я - YA Ya, я - ya<br/><br />' . "rn",
'Если Вам необходимо, чтобы какая-то часть текста не транслитировалась, заключите его в скобки <strong>[]</strong>.<br />Пример: Адрес сайта [http://mobi.vipcou.ru]' . "rn",
'</div>' . "rn",
'<a class="links" href="?help' . $id_back . '">Назад</a> <a class="links" href="./">В гостевую</a> <a class="links" href="?exit">Выход!</a>';
}
else
{
echo '<div class="title"><b>Раздел помощи</b></div>' . "rn",
'<a class="link" href="?help&smile' . $id_back . '">» Смайлы</a>' . "rn",
'<a class="link" href="?help&bbcode' . $id_back . '">» BB коды</a>' . "rn",
'<a class="link" href="?help&translate' . $id_back . '">» Правила транслита</a>' . "rn",
'<br/>' . "rn",
'<a class="links" href="?add' . $id_back . '">Назад</a> <a class="links" href="./">В гостевую</a> <a class="links" href="?exit">Выход!</a>';
}
}
elseif( isset($_GET['go']) ) // Страница перехода на страницу
{
$title = 'Админ - Переход';
include_once('../system/head.php');
echo '<div class="title">Перейти на страницу</div>' . "rn",
'<div class="a"><form action="" method="get"><fieldset>' . "rn",
'Стр. <input type="text" name="page" size="4" class="texta" />' . "rn",
'<input type="submit" value="->" class="submit" />' . "rn",
'</fieldset></form></div>' . "rn",
'<div class="bottom"><a href="?page=' . ( isset($_GET['back']) ? (int) $_GET['back'] : 1 ) . '">Назад</a> • <a href="?exit">Выход!</a></div>';
}
elseif( isset($_GET['exit']) ) // Выход из админки
{
session_destroy();
header('Location: ./');
exit;
}
else // Главная страница
{
$message = file('data/message.dat');
if( isset($_REQUEST['send']) )
{
// Баним юзеров и/или удаляем сообщения
if( !empty($_POST['id']) && !empty($_POST['action']) )
{
if( !is_array($_POST['id']) || !is_array($_POST['action']) )
{
exit('oops!');
}
$ban = file('data/ban.dat');
// Баним
$in_ipua = in_array('ipua', $_POST['action']);
$in_cookie = in_array('cookie', $_POST['action']);
$in_ip = in_array('ip', $_POST['action']);
if( $in_ipua || $in_cookie || $in_ip )
{
foreach( $_POST['id'] as $v )
{
$m = explode('|', $message[intval($v)]);
if( $in_ipua )
{
$ban[] = '1|' . $m[7] . '|' . $m[6] . "rn";
}
if( $in_cookie && $m[8] )
{
$ban[] = '2|' . $m[8] . "|rn";
}
if( $in_ip )
{
$ban[] = '3|' . $m[7] . "|rn";
}
}
puts('data/ban.dat', implode(array_unique($ban)), 'w');
}
// Удаляем сообщение(я)
if( in_array('delete', $_POST['action']) )
{
puts('data/message.dat', implode(array_diff_key($message, array_flip($_POST['id']))), 'w');
}
header('Location: ./?page=' . ( isset($_POST['back']) ? (int) $_POST['back'] : 1 ) . ( SID ? '&' . SID : '' ));
exit;
}
// Удаление всех сообщений
if( isset($_GET['clear']) )
{
puts('data/message.dat', '', 'w');
header('Location: ./' . ( SID ? '?' . SID : '' ));
exit;
}
}
$all = count($message);
$_GET['page'] = isset($_GET['page']) ? (int) $_GET['page'] : 1;
$num_pages = ceil($all / A_Q_MESSAGE);
$start = $_GET['page'] * A_Q_MESSAGE - A_Q_MESSAGE;
if( $_GET['page'] > $num_pages || $_GET['page'] < 1 )
{
$_GET['page'] = 1;
$start = 0;
}
// Шапка
$title = 'Админка';
include_once('../system/head.php');
echo '<div class="title">Админка</div>';
echo '<a class="link" href="?add">Добавить сообщение</a>' . "rn";
if( $all )
{
// Сообщения
echo '<form action="" method="post"><input type="hidden" name="back" value="' . $_GET['page'] . '" />' . "rn";
for( $i = $all - $start - 1; $i >= $all - $start - A_Q_MESSAGE && isset($message[$i]); $i-- )
{
$m = explode('|', rtrim($message[$i]));
echo '<div class="' . ( $i % 2 == 0 ? 'block' : 'block' ) . '"><input type="checkbox" name="id[]" value="' . $i . '" /> <span class="' . $m[0] . '"><strong><a href="?add&id=' . $i . '&back=' . $_GET['page'] . '">' . $m[1] . '</a></strong></span> <span class="aa">' . today($m[2]) . ', ' . $m[3] . '</span><br /><span class="ab">' . strtok($m[6], '/') . ', ' . $m[7] . '</span><br />' . $m[9] . ( $m[10] ? '<div class="answer"><span class="red"><strong>Ответ</strong></span> <span class="aa">' . today($m[11]) . ', ' . $m[12] . '</span><br />' . $m[10] . '</div>' : '' ) . '</div>' . "rn";
}
// Навигация
echo '<div class="bottom">' . ( $num_pages >= 10 ? '<a0class="links" href="?go&back=' . $_GET['page'] . '">Стр.</a> ' : 'Стр. ' );
for( $pr = '', $i = 1 ; $i <= $num_pages ; $i++ )
{
echo $pr = (($i == 1 || $i == $num_pages || abs($i - $_GET['page']) < 3) ? ($i == $_GET['page'] ? " [$i] " : ' <a class="links" href="./?page=' . $i . '">' . $i . '</a> ') : (($pr == ' .. ' || $pr == '') ? '' : ' .. '));
}
echo '<hr>';
echo '</div>' . "rn",
'<div class="block"><select name="action[]" size="1" multiple><option value="delete">Удалить</option><option value="ipua">IP+UA</option><option value="cookie">Cookie</option><option value="ip">IP</option></select><input type="submit" name="send" value="ok" class="submit" /><br />';
}
else
{
echo '<div class="block">Сообщений нет.</div>' . "rn",
'<div class="bottom">Стр. [1]</div><div class="a">';
}
// Админская менюшка
echo '</div>';
echo '<a class="link" href="?ban">Банлист</a><a class="link" href="?online">Онлайн [' . count(file('data/online.dat')) . ']</a>' . ( $all ? '<a class="link" href="?send&clear">Сообщений: ' . $all . ' [Очистить]</a></form>' : '' ) . '</div>' . "rn",
'<a class="link" href="?exit">Выход!</a>';
}
include '../system/foot.php';
?>