Вход Регистрация
Файл: 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 '&amp;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(10009999);

        
// Форма ввода

echo '<div class="block"><form action="?add' . ( $is_id '&amp;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(10009999) . ( SID '&amp;' 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']) ? '&amp;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'] : );
            
$num_pages ceil($all Q_PSMILE);
            
$start $page Q_PSMILE Q_PSMILE;

            if( 
$page $num_pages || $page )
            {
                
$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&amp;back=' $page '">Стр.</a>' 'Стр.' );

                for( 
$pr ''$i 1$i <= $num_pages$i++ )
                {
 echo 
$pr = (($i == || $i == $num_pages || abs($i $page) < 3) ? ($i == $page " [$i] " ' <a class="links" href="./?help&amp;smile' $_GET['id'] . '&amp;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&amp;smile' $_GET['id'] . '">&raquo; Смайлы</a>';
echo 
'<a class="link" href="?help&amp;bbcode' $_GET['id'] . '">&raquo; BB коды</a>';
echo 
'<a class="link" href="?help&amp;translate' $_GET['id'] . '">&raquo; Правила транслита</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'] : ) . '">Назад</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'] : );
        
$num_pages ceil($all U_Q_MESSAGE);
        
$start $_GET['page'] * U_Q_MESSAGE U_Q_MESSAGE;

        if( 
$_GET['page'] > $num_pages || $_GET['page'] < )
        {
            
$_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 == 'block' 'block' ) . '"><span class="' $m[0] . '"><strong><a href="?add&amp;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&amp;back=' $_GET['page'] . '">Стр.</a>' 'Стр.' );

            for( 
$pr ''$i 1$i <= $num_pages$i++ )
            {
echo 
$pr = (($i == || $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'] : );

    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&amp;id=' $_GET['id'] . '&amp;back=' $_GET['back'] . '">Помощь</a>' "rn",
'<div class="block"><form action="?add&amp;id=' $_GET['id'] . '&amp;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&amp;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&amp;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",
'
<class="links" href="?add&amp;id=' . $_GET['id'] . '">Назад</a>  <class="links" href="./">В гостевую</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 ? '<class="links" href="?go&amp;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] " : ' <class="links" href="?ban&amp;page=' . $i . '">' . $i . '</a') : (($pr == ' .. ' || $pr == '') ? '' : ' .. '));
        }

        echo '
</div>' . "rn",
'
<div class="block"><input type="submit" name="send" value="Удалить" class="submit" /> <a href="?ban&amp;send&amp;clear"Очистить</a></div></form>' . "rn",
        '
<div class="bottom">';
    }
    else
    {
echo '
<div class="block">Список заблокированных пуст.</div>' . "rn",
'
<div>Стр. [1';
    }

echo '
<class="links" href="./">В гостевую</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 ? '<class="links" href="?go&amp;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] " : ' <class="links" href="?online&amp;page=' . $i . '">' . $i . '</a') : (($pr == ' .. ' || $pr == '') ? '' : ' .. '));
    }

echo ' 
<class="links" href="./">В гостевую</a> <class="links" href="?exit">Выход!</a></div>';
}
elseif( isset($_GET['
help']) ) // Страница помощи
{
    $id_back = ( isset($_GET['
id'], $_GET['back']) ? '&amp;id=' . (int) $_GET['id'] . '&amp;back=' . (int) $_GET['back'] : '' );

$title = '
Админ Помощь';
include_once('
../system/head.php');

    if( isset($_GET['
smile']) )
    {
        $smile = array_diff(array_map(create_function('
$v', 'return substr($v0, -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 ? '<class="links" href="?go&amp;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&amp;smile' . $id_back . '&amp;page=' . $i . '">' . $i . '</a') : (($pr == ' .. ' || $pr == '') ? '' : ' .. '));
            }
        }
        else
        {
echo '
<div class="block">Смайлов нет.</div>' . "rn",
            '
<div class="bottom">Стр. [1]';
        }

echo '
</div></div><class="links" href="?help' . $id_back . '">Назад</a>  <class="links" href="./">В гостевую</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&amp;smile' $id_back '">&raquo; Смайлы</a>' "rn",
'<a class="link" href="?help&amp;bbcode' $id_back '">&raquo; BB коды</a>' "rn",
'<a class="link" href="?help&amp;translate' $id_back '">&raquo; Правила транслита</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="-&gt;" class="submit" />' "rn",
    
'</fieldset></form></div>' "rn",
    
'<div class="bottom"><a href="?page=' . ( isset($_GET['back']) ? (int) $_GET['back'] : ) . '">Назад</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($messagearray_flip($_POST['id']))), 'w');
            }

            
header('Location: ./?page=' . ( isset($_POST['back']) ? (int) $_POST['back'] : ) . ( 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'] < )
    {
        
$_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 == 'block' 'block' ) . '"><input type="checkbox" name="id[]" value="' $i '" /> <span class="' $m[0] . '"><strong><a href="?add&amp;id=' $i '&amp;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&amp;back=' $_GET['page'] . '">Стр.</a> ' 'Стр. ' );

        for( 
$pr ''$i $i <= $num_pages $i++ )
        {
echo 
$pr = (($i == || $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&amp;clear">Сообщений: ' $all ' [Очистить]</a></form>' '' ) . '</div>' "rn",
'<a class="link" href="?exit">Выход!</a>';
}

include 
'../system/foot.php';
?>
Онлайн: 2
Реклама