За последние 24 часа нас посетили 17858 программистов и 1613 роботов. Сейчас ищут 1488 программистов ...

[beta] Чат. Работоспособный = )

Тема в разделе "Решения, алгоритмы", создана пользователем EvelRus, 11 июл 2008.

  1. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    Требует: php5, MySql5, .htaccess,
    Описание: Многофункциональный чат с логами на файлах. Пользователи храняться в
    БД. Чат может быть интегрирован в любую CMS работающею на БД (настройка полей в конфиге).
    Возможности:
    - Система карм/нарушений
    - Отдельный приват
    - Список пользователей Он-Лайн [a-z]
    - Вставка имени пользователя в строку привата
    - Выделение модеров в списке юзеров
    - Режим "только чтение"
    - Бан по логину
    - Два уровня модераторов:
    1 уровень:
    -- Выдача предупреждений, +1 к нарушениям
    -- Удаление из чата, + 2 к нарушениям
    -- "Только чтение" на 15, 30, 60, 180, 360 минут
    -- оповещение (Любой текст от имени системы)
    2 уровень:
    -- Чтение привата [-]
    -- Бан по Логиню/ИП на сутки, неделя, месяц, бессрочно [-]
    -- Изменение рейтинга вручную [-]
    - уровень - админ
    -- назначение на должности
    -- снятие с них
    - Отправка сообщений Ctrl+Enter
    - Защита от двойной отправки сообщения
    - Запрет доступа к чату если предупреждений больше либо они равны карме
    - Выделение "опасных" пользователей (карма-нарушения<=2)
    - Нельзя войти под одним ником с разных компьютеров
    - Защита логов от просмотра посторонними
    - Антифлуд система: обрезание больше 3 одинаковых символов подряд
    - Смайлики
    - Эмоции (типа "хорошее настроение", "с криком")
    - переход на домашнюю страницу пользователя (в структуре сайта)
    - Определение пола пользователя
    - Выделение моего ника если сообщение адресовано мне
    - Легкая настройка дизайна через CSS [-]
    и многое другое
    [-] - не доделано

    Примерно так :)
    Потестить тут: www.vowik.ru/chat/ test:test

    скачать исходники (257 кб.)

    Сделать еще надо немного мелких доработок, но в целом чат полностью функционален

    БД еще щас дам :)

    [sql]
    CREATE TABLE `phpbb_users` (
    `user_id` mediumint(8) NOT NULL default '0',
    `username` varchar(25) NOT NULL default '',
    `user_password` varchar(32) NOT NULL default '',
    `user_chat_rank` int(1) NOT NULL default '0',
    `user_chat_karma` int(5) NOT NULL default '10',
    `user_chat_error` int(5) NOT NULL default '0',
    `user_chat_session` varchar(50) NOT NULL default '',
    `user_chat_ip` varchar(15) NOT NULL default '',
    `user_chat_ban_time` int(10) NOT NULL default '0',
    `user_chat_ban` int(1) NOT NULL default '0',
    `user_chat_read` int(10) NOT NULL default '0',
    `user_chat_online` int(1) NOT NULL default '0',
    `user_chat_gender` int(1) NOT NULL default '0',
    `user_chat_sound` int(1) NOT NULL default '0',
    `user_chat_user_chat_color` int(6) NOT NULL default '0',
    `user_chat_reload` int(2) NOT NULL default '5',
    PRIMARY KEY (`user_id`),
    KEY `user_session_time` (`user_session_time`)
    ) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
    [/sql]

    Жду конструктивных предложений в формате:
    Большая просьба объяснять почему так нельзя или не желательно, это мой первый подобный проект, потому я хочу понять смысл ошибок, а не просто что бы пнули в мануал ничего не объяснив

    Заранее спасибо!
     
  2. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    Есть небольшая бага с приватом и списком юзеров...
    приват: почему-то первое сообщение отправляется дважды :(
    Окно юзеров: В списке красным должны выделяться только те, у кого карма-нарушения <=2? а на деле выделяются все :( Не могу понять почему :(

    PS чат делал под себя, потому не спрашивайте зачем здесь это или то :) Вдруг кому пригодится )
     
  3. dAllonE

    dAllonE Guest

    Однако....


    1. ' зачем то заменяется на \'
    2. <?php echo('hello world!'); ?> вообще не вставилось....

    ну и т.д.
     
  4. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    Ну так и не должно )
    Там работает strip_tags();

    А вот с кавычкам подумаю..
     
  5. dAllonE

    dAllonE Guest

    Nemo, представь себе что я сижу в твоем замечательном чате, и помогаю каким-нибудь блондинкам с моего курса сдать курсач по PHP ) а это цуко режет все теги и кавычки загадочно экранирует) :)

    Но в принципе для начала неплохо, респект. Если бы таки сделал без постоянных апдейтов страницы вообще было бы хорошо.... А так думаю достанешь ты в конце концов сервак когда его побольше народу будут юзать...
     
  6. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    Ты на аякс намекаешь? ;)))
    Ну не умею я :(((

    Хорошо, а как тогда сделать защиту? что бы всякую фигню на писали в чат.. htmlspecialchars(); ??? Работает такое.. правда не везде :))
    Открой файл function.php
    log_write (); может подскажешь как исправить :)
     
  7. dAllonE

    dAllonE Guest

    Хм... А если по простому в log_write() mysql_escape_string($text), а при выводе htmlspecialchars($text, ENT_QUOTES); Не прокатит?

    Защита от флуда = в определенное кол-во времени не более стольки то сообщений. Игнорить 2 одинаковых сообщения от одного и того же юзверя...
     
  8. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    1) Чат на файлах :)))
    2) не все запросы длолжны быть обработаны )
    3) Выводится должно то, что храниться в файле_логе будь то html или акси :)
     
  9. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    внимательно пизучи код чата ))) Тогда поймешь о чем я :)
     
  10. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    Объясните дураку, где я не прав? :(((

    PHP:
    1. <?
    2. echo '<hr noshade color="#000080">';
    3. $sql = "SELECT * FROM `$db_table_users` WHERE `user_chat_online`='1' ORDER BY `$db_table_users_name` ASC";
    4. $sql = mysql_query($sql) or print("Не могу составить список пользователей в On-Line");
    5. while($nextrow = @mysql_fetch_array($sql))
    6. {
    7.  $time_action = $nextrow['user_chat_action'];
    8.  if (time() - $time_action  > '900')
    9.  {
    10.   echo "Время: ".time();
    11.   echo "<br>в базе ".$time_action;
    12.  $sql1 = ("UPDATE `$db_table_users` SET `user_chat_online` = '1' WHERE `$db_table_users`.`$db_table_users_id` = $nextrow[$db_table_users_id] LIMIT 1");
    13.  $sql1 = mysql_query($sql1) or die("Не могу убрать из On-Line");
    14.  }
    15.  if ($nextrow['user_chat_karma'] - $nextrow['user_chat_error'] < 2)
    16.  {
    17.   $i3 = ' style="color:#CC0000;" ';
    18.  }
    19.  if ($nextrow['user_chat_rank'] == '1' || $nextrow['user_chat_rank'] == '2' || $nextrow['user_chat_rank'] == '3')
    20.  {
    21.   $i1 = '<i>';
    22.   $i2 = '</i>';
    23.  }
    24. echo '<table border="0" width="100%" cellspacing="0" cellpadding="0">
    25.     <tr>
    26.         <td align="center">
    27.         <p align="left"><a href="http://vowik.ru/forum/profile.php?mode=viewprofile&u='.$nextrow[$db_table_users_id].'" target="_blank"><img src="http://vowik.ru/forum/templates/subSilver/images/icon_mini_home.gif" border="0"></a>';
    28.         if($nextrow['user_gender'] === '1')
    29.         {
    30.         echo ' <img src="data/male_m.gif" border="0">';
    31.         }
    32.         elseif ($nextrow['user_gender'] === '2')
    33.         {
    34.         echo ' <img src="data/male_j.gif" border="0">';
    35.         }
    36.         else
    37.         {
    38.         echo ' <img src="data/male_x.gif" border="0">';
    39.         }
    40.         echo '</td>
    41.         <td align="center">'.$i1.'<a target"messages" href="#" '.$i3.'onClick="parent.frames[\'messages\'].document.getElementById(\'privat\').value = this.innerHTML; return false;" '.$i3.'>'.$nextrow[$db_table_users_name].'</a>'.$i2.'</td>
    42.         <td align="center">["'.$nextrow['user_chat_karma'].'"-"'.$nextrow['user_chat_error'].'"]</td>
    43.     </tr>
    44. </table>';
    45. }
    46. ?>
    Почему ифы не обрабатываются в цикле?:((( мне надо КАЖДОГО проверять на соответствие условию.. а проверяется только первый :(

    Код (Text):
    1. echo "Время: ".time();
    2. echo "<br>в базе ".$time_action;
    выводится только один раз, а должен, минимум, два :(
     
  11. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Сделай под этим print_r($nextrow);
     
  12. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    Обновил чатик!!! (ссылка таже) Посмотрите еще доку... может что исправить...
    CSS по прежнему не работает..
     
  13. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    И сново обновление! Добавлена админка и исправленны пара багов
    Появилась инструкция к установке....
     
  14. md5

    md5 Активный пользователь

    С нами с:
    29 янв 2007
    Сообщения:
    250
    Симпатии:
    0
    лучше вермишель отдели от мяса
     
  15. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
  16. Anonymous

    Anonymous Guest

    и мух от котлет
     
  17. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    не понл :(
     
  18. Anonymous

    Anonymous Guest

    ... и код приложения от логики отображения....
     
  19. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    а почеловечески слабо?
     
  20. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    HTML от PHP :)
     
  21. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    а зачем? оно и так прекрасно работает... и ничуть не хуже, на мой взгляд
     
  22. md5

    md5 Активный пользователь

    С нами с:
    29 янв 2007
    Сообщения:
    250
    Симпатии:
    0
    тогда лучше почитай, зачем отделять
    а потом вернись к моему верхнему посту
     
  23. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    Все? Больше не будет идей, предложений и замечаний )
     
  24. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Добавлять новые сообщения снизу!