Chat script chat.by i chat.everyday.by

Discussion in 'Песочница' started by azeman, 29 Jan 2008.

  1. azeman

    azeman New Member

    Joined:
    28 Jan 2008
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    Zdrastvuyte esli ktoto xocet polucit script doljen i pomoch mne :) u menya problem ustanovki chata kto pomojet i to polucit script ;)

    scripti platniy www.chat.by ,chat.everyday.by

    svyaz samnoy ICQ 242602182
     
  2. Хозяин

    Хозяин Elder - Старейшина

    Joined:
    15 Mar 2006
    Messages:
    435
    Likes Received:
    404
    Reputations:
    110
    Помогу, при условии последующего выкладывания скрипта в паблик
     
  3. azeman

    azeman New Member

    Joined:
    28 Jan 2008
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    <?php

    include('../include/template.php');
    include('../include/lib1.php');

    define("MD5_HASH", "318bd63a06f232aede11ab54730ae65b"); //хэш логина с паролем

    $a = explode('_', get_http_var('COOKIE', 'id'));

    if (count($a) < 2)
    {
    $id = get_http_var('POST', 'id');
    $tmp_id = get_http_var('POST', 'tmp_id');
    }
    else
    {
    $id = $a[0];
    $tmp_id = $a[1];
    }

    $mode = get_http_var('GET', 'mode');
    if (!is_string($mode)) $mode = get_http_var('POST', 'mode');

    if (!$id && !$tmp_id) go_index();
    if (md5($id . $tmp_id) != MD5_HASH) print_error('Вы не имеете права администрировать чат');

    setcookie("id", $id . '_' . $tmp_id);

    switch ($mode)
    {
    case 'main' : go_main_page(); break;
    case 'chat_list' : go_chat_list(); break;
    case 'add_chat' : add_chatroom(); break;
    case 'rm_chat' : rm_chatroom(); break;
    case 'install' : install_chat(); break;
    case 'uninstall' : uninstall_chat(); break;
    case 'query' : do_query(); break;
    case 'show_users' : show_users(); break;
    case 'rm_user' : rm_user(); break;
    default : go_main_page(); break;
    }

    exit();

    /*****************************************************/

    function show_users()
    {
    $chat_id = get_http_var('GET', 'chat_id');
    if (!$chat_id || preg_match('/\D/', $chat_id)) print_error('Идентификатор чата должен состоять только из цифр');

    $db = db_connect();

    $sth = mysql_query("SELECT title FROM chatrooms WHERE id = '${chat_id}'") or print_error(sql_error());
    if (mysql_num_rows($sth) == 0) print_error("В системе отсутствует чат с идентификатором [${chat_id}]");
    list($title) = mysql_fetch_row($sth);

    $tpl = new Template(TPL_PATH . '/admin/user_list.tpl');
    init_tpl($tpl);

    $tpl->set_var('CHAT_NAME', html_escape($title));

    $sth = mysql_query("SELECT id, name, color, sex FROM chat_users_${chat_id}") or print_error(sql_error());
    $tpl1 = new Template(TPL_PATH . '/admin/user_list_line.tpl');
    $tpl1->set_var('CHAT_ID', $chat_id);
    $text = '';
    $i = 0;
    while (list($id, $name, $color, $sex) = mysql_fetch_row($sth))
    {
    $i++;
    $tpl1->set_var('TR_CLASS', ($i & 1) ? "first" : "second");
    $tpl1->set_var('NAME', html_escape($name));
    $tpl1->set_var('COLOR', $color);
    $tpl1->set_var('ID', $id);
    $tpl1->set_var('SEX', $sex);
    $text .= $tpl1->get_doc();
    }

    $tpl->set_var('TBODY', $text);

    print($tpl->get_doc());
    mysql_close($db);
    exit();
    }

    function rm_user()
    {
    $chat_id = get_http_var('GET', 'chat_id');
    $user_id = get_http_var('GET', 'user_id');
    if (!$chat_id || preg_match('/\D/', $chat_id)) print_error('Идентификатор чата должен состоять только из цифр');
    if (!$user_id || preg_match('/\D/', $user_id)) print_error('Идентификатор пользователя должен состоять только из цифр');

    $dbh = db_connect();

    $sth = mysql_query("SELECT title FROM chatrooms WHERE id = '${chat_id}'") or print_error(sql_error());
    if (mysql_num_rows($sth) == 0) print_error("В системе отсутствует чат с идентификатором [${chat_id}]");
    list($title) = mysql_fetch_row($sth);

    $sth = mysql_query("SELECT name, ip FROM chat_users_${chat_id} WHERE id = '${user_id}'") or print_error(sql_error());
    if (mysql_num_rows($sth) == 0) print_error("Пользователь с идентификатором [${user_id}] отсутствует в чате [${title}]");
    list($name, $user_ip) = mysql_fetch_row($sth);

    mysql_query("DELETE FROM chat_users_${chat_id} WHERE id = '${user_id}'") or print_error(sql_error());
    $time = time();
    $end_time = $time + BAN_TIME;
    mysql_query("INSERT INTO chat_ban_list SET chat_id = '${chat_id}', user_id = '${user_id}', ip = '${user_ip}', time = '${end_time}'") or print_error(sql_error());
    $name = mysql_escape_string($name);
    $ip = get_user_ip();
    mysql_query("INSERT INTO chat_${chat_id} SET msg = 'Пользователь [${name}] удален из чата администратором', time = '${time}', ip = '${ip}'") or print_error(sql_error());
    mysql_query("UPDATE chatrooms SET users_count = users_count - 1 WHERE id = '${chat_id}'") or print_error(sql_error());

    $tpl = new Template(TPL_PATH . '/admin/user_del_ok.tpl');
    init_tpl($tpl);
    $tpl->set_var('CHAT_NAME', html_escape($title));
    $tpl->set_var('CHAT_ID', $chat_id);
    $tpl->set_var('NAME', html_escape($name));

    print($tpl->get_doc());
    mysql_close($dbh);
    exit();


    }

    function do_query()
    {
    $query = get_http_var('POST', 'query');
    $query = stripslashes($query);

    $tpl = new Template(TPL_PATH . '/admin/query.tpl');
    init_tpl($tpl);

    $dbh = db_connect();

    //а теперь выполняется очень опасная часть программы!!!
    $result = mysql_query($query) or print_error(sql_error());

    if ($result === TRUE) $text = '';
    else
    {
    $col = new Template();
    $col->prepare("<td><%NAME%></td>");
    $text = "<tr class=\"thead1\">";
    $n = 0;
    while ($meta = mysql_fetch_field($result))
    {
    $n++;
    $col->set_var('NAME', html_escape($meta->name));
    $text .= $col->get_doc();
    }
    $text .= "</tr>\n";

    $j = 0;
    while ($res = mysql_fetch_row($result))
    {
    $j++;
    $text .= "<tr class=\"" . (($j & 1) ? "first" : "second") . "\">";
    for ($i = 0; $i < $n; $i++)
    {
    $col->set_var('NAME', html_escape($res[$i]));
    $text .= $col->get_doc();
    }
    $text .= "</tr>\n";
    }
    }

    mysql_close($dbh);
    $tpl->set_var('TBODY', $text);
    $tpl->set_var('QUERY', html_escape($query));
    print($tpl->get_doc());
    exit();
    }

    function go_main_page()
    {
    $tpl = new Template(TPL_PATH . '/admin/main.tpl');
    init_tpl($tpl);
    print($tpl->get_doc());
    exit();
    }

    function go_index()
    {
    setcookie('id', '');
    $tpl = new Template(TPL_PATH . '/admin/index.tpl');
    init_tpl($tpl);
    print($tpl->get_doc());
    exit();
    }

    function go_chat_list()
    {
    $tpl = new Template(TPL_PATH . '/admin/chat_list.tpl');
    init_tpl($tpl);

    $dbh = db_connect();

    $chat_list = '';
    $line = new Template(TPL_PATH . '/admin/chat_list_line.tpl');
    $sth = mysql_query("SELECT id, title, users_count, last_visit FROM chatrooms ORDER BY id") or print_error(sql_error());
    $i = 0;
    while (list($chat_id, $title, $users_count, $time) = mysql_fetch_row($sth))
    {
    $i++;
    $line->set_var('TR_CLASS', ($i & 1) ? "first" : "second");
    $line->set_var('NUM', $i);
    $line->set_var('CHAT_ID', $chat_id);
    $line->set_var('TITLE', html_escape($title));
    $line->set_var('USERS_COUNT', $users_count);
    $line->set_var('TIME', date('d M Y H:i:s', $time));
    $chat_list .= $line->get_doc();
    }

    mysql_close($dbh);
    $tpl->set_var('CHAT_LIST', $chat_list);

    print($tpl->get_doc());
    exit();
    }

    function add_chatroom()
    {
    $chat_name = get_http_var('POST', 'chat_name');
    $chat_name = clear_str($chat_name);
    if (strlen($chat_name) < 3) print_error('Название чата должно состоять минимум из трех символов');
    $chat_name = mysql_escape_string($chat_name);

    $dbh = db_connect();

    $sth = mysql_query("SELECT COUNT(*) FROM chatrooms WHERE title = '${chat_name}'") or print_error(sql_error());
    list($count) = mysql_fetch_row($sth);
    if ($count > 0) print_error('Чат с названием [' . html_escape($chat_name) . '] уже существует');

    //добавляем запись в таблицу [chatrooms] о новой комнате
    mysql_query("INSERT INTO chatrooms SET title = '${chat_name}'") or print_error(sql_error());
    $sth = mysql_query("SELECT id FROM chatrooms WHERE title = '${chat_name}'") or print_error(sql_error());
    list($chat_id) = mysql_fetch_row($sth);

    //создаём таблицу [chat_users_*] (тут хранится список оналйн-пользователей)
    $query = "CREATE TABLE chat_users_${chat_id} (" .
    "id INT UNSIGNED NOT NULL," .
    "name CHAR(16) NOT NULL," .
    "ip INT UNSIGNED NOT NULL," .
    "tmp_id INT UNSIGNED NOT NULL," .
    "last_visit INT UNSIGNED NOT NULL," .
    "is_moderator TINYINT UNSIGNED NOT NULL, " .
    "color CHAR(6) NOT NULL DEFAULT '" . DEFAULT_USER_COLOR . "'," .
    "sex CHAR(1) NOT NULL" .
    ") TYPE = MYISAM";

    mysql_query($query) or print_error(sql_error());

    //создаем таблицу [chat_*] (тут хранятся все сообщения для данной комнаты)
    $query = "CREATE TABLE chat_${chat_id} (" .
    "id INT UNSIGNED NOT NULL AUTO_INCREMENT," .
    "from_id INT UNSIGNED NOT NULL," .
    "to_id INT UNSIGNED NOT NULL," .
    "is_private TINYINT UNSIGNED NOT NULL," .
    "msg CHAR(255) NOT NULL," .
    "time INT UNSIGNED NOT NULL," .
    "ip INT UNSIGNED NOT NULL," .
    "PRIMARY KEY (id)" .
    ") TYPE = MYISAM";

    mysql_query($query) or print_error(sql_error());

    mysql_close($dbh);
    print_ok('Чат с названием [' . html_escape($chat_name) . '] успешно создан');
    exit();
    }

    function rm_chatroom()
    {
    $chat_id = get_http_var('GET', 'chat_id');
    if (!$chat_id || preg_match('/\D/', $chat_id)) print_error('Идентификатор чата должен состоять только из цифр');

    $dbh = db_connect();

    $sth = mysql_query("SELECT title FROM chatrooms WHERE id = '${chat_id}'") or print_error(sql_error());
    if (mysql_num_rows($sth) == 0) print_error("Комната с идентификатором [${chat_id}] отсутствует в чате");

    list($title) = mysql_fetch_row($sth);
    mysql_query("DELETE FROM chatrooms WHERE id = '${chat_id}'") or print_error(sql_error());
    mysql_query("DELETE FROM chat_ban_list WHERE chat_id = '${chat_id}'") or print_error(sql_error());
    mysql_query("DELETE FROM chat_moderators WHERE chat_id = '${chat_id}'") or print_error(sql_error());
    mysql_query("DROP TABLE chat_users_${chat_id}") or print_error(sql_error());
    mysql_query("DROP TABLE chat_${chat_id}") or print_error(sql_error());

    mysql_close($dbh);
    print_ok('Комната [' . html_escape($title) . '] успешно удалена из чата');
    exit();
    }

    function install_chat()
    {
    $dbh = db_connect('');

    //создаём базу данных [chat]
    mysql_query("CREATE DATABASE " . MYSQL_DB_NAME) or print_error(sql_error());
    mysql_select_db(MYSQL_DB_NAME) or print_error(sql_error());

    //создаём таблицу [chat_users]
    $query = "CREATE TABLE chat_users (" .
    "id INT UNSIGNED NOT NULL AUTO_INCREMENT," .
    "name CHAR(16) NOT NULL," .
    "password CHAR(16) BINARY NOT NULL," .
    "sex CHAR(1) NOT NULL," . // пол
    "ip INT UNSIGNED NOT NULL," .
    "tmp_id INT UNSIGNED NOT NULL," .
    "last_visit INT UNSIGNED NOT NULL," .
    "first_visit INT UNSIGNED NOT NULL," .
    "color CHAR(6) NOT NULL DEFAULT '" . DEFAULT_USER_COLOR . "'," . // цвет ника
    "msg_order TINYINT NOT NULL," . // порядок вывода сообщений (0 - сверху вниз, 1 - снизу вверх)
    "font_size TINYINT NOT NULL DEFAULT " . DEFAULT_FONT_SIZE . "," . // размер шрифта
    "visits_count INT UNSIGNED NOT NULL," . // количество посещений чата
    "PRIMARY KEY (id)," .
    "UNIQUE INDEX (name)" .
    ") TYPE = MYISAM";

    mysql_query($query) or print_error(sql_error());

    //создаём таблицу [chatrooms]
    $query = "CREATE TABLE chatrooms (" .
    "id INT UNSIGNED NOT NULL AUTO_INCREMENT," .
    "title CHAR(255) NOT NULL," .
    "last_visit INT UNSIGNED NOT NULL," .
    "users_count INT UNSIGNED NOT NULL," .
    "PRIMARY KEY (id)" .
    ") TYPE = MYISAM";

    mysql_query($query) or print_error(sql_error());

    //создаём таблицу [chat_messages]
    $query = "CREATE TABLE chat_messages (" .
    "id INT UNSIGNED NOT NULL AUTO_INCREMENT," .
    "ip INT UNSIGNED NOT NULL," .
    "from_id INT UNSIGNED NOT NULL," .
    "to_id INT UNSIGNED NOT NULL," .
    "time INT UNSIGNED NOT NULL," .
    "title VARCHAR(255) NOT NULL," .
    "msg TEXT NOT NULL," .
    "is_new TINYINT UNSIGNED NOT NULL," .
    "is_del_from TINYINT UNSIGNED NOT NULL," .
    "is_del_to TINYINT UNSIGNED NOT NULL," .
    "PRIMARY KEY (id)," .
    "INDEX (from_id)," .
    "INDEX (to_id)" .
    ") TYPE = MYISAM";

    mysql_query($query) or print_error(sql_error());

    //создаем таблицу [chat_ban_list]
    $query = "CREATE TABLE chat_ban_list (" .
    "user_id INT UNSIGNED NOT NULL, " .
    "chat_id INT UNSIGNED NOT NULL, " .
    "ip INT UNSIGNED NOT NULL, " .
    "time INT UNSIGNED NOT NULL, " .
    "PRIMARY KEY (chat_id, user_id)" .
    ") TYPE = MYISAM";

    mysql_query($query) or print_error(sql_error());

    //создаем таблицу [chat_moderators]
    $query = "CREATE TABLE chat_moderators (" .
    "user_id INT UNSIGNED NOT NULL, " .
    "chat_id INT UNSIGNED NOT NULL, " .
    "PRIMARY KEY (chat_id, user_id)" .
    ") TYPE = MYISAM";

    mysql_query($query) or print_error(sql_error());


    mysql_close($dbh);
    print_ok('База данных [chat] успешно создана');
    exit();
    }

    function uninstall_chat()
    {
    $dbh = db_connect();

    //удалим все таблицы, входящие в БД чата
    $sth = mysql_query("SELECT id FROM chatrooms") or print_error(sql_error());
    while (list($id) = mysql_fetch_row($sth))
    {
    mysql_query("DROP TABLE chat_users_${id}") or print_error(sql_error());
    mysql_query("DROP TABLE chat_${id}") or print_error(sql_error());
    }
    mysql_query("DROP TABLE chat_messages") or print_error(sql_error());
    mysql_query("DROP TABLE chat_users") or print_error(sql_error());
    mysql_query("DROP TABLE chatrooms") or print_error(sql_error());

    //удалим саму БД с чатом
    mysql_query("DROP DATABASE " . MYSQL_DB_NAME) or print_error(sql_error());
    print_ok('База данных с чатом успешно удалена');

    mysql_close($dbh);
    exit();
    }

    function print_ok($str)
    {
    $tpl = new Template(TPL_PATH . '/admin/ok.tpl');
    init_tpl($tpl);

    $tpl->set_var('STR', $str);
    print($tpl->get_doc());
    exit();
    }

    ?>





    Nujen nastroit xesh s porolom
     
  4. Хозяин

    Хозяин Elder - Старейшина

    Joined:
    15 Mar 2006
    Messages:
    435
    Likes Received:
    404
    Reputations:
    110
    Это что значит? Это вообще кусок чего? Конфиг?
    ___

    А, походу понял, пароль админа в конфиге, а с хешем не знаешь что делать и зайти в админку не можешь?))) бугага

    Пароль

    1331853211
     
    #4 Хозяин, 30 Jan 2008
    Last edited: 30 Jan 2008