Пишем свой чат на PHP
- 1
- 2
- 3
- 4
- 5
- следующая ›
- последняя »
Задался я мыслью, написать подобие чата. как и все великое, начнется это с простых вещей....
- чат будет на фреймах -
- главный, с сообщениями
- ввод, где будет вводится текст
- список ников, понятно
- и..фрейм "драйвер" всего этого дела )
- будет юзать mySQL, потому как очень просто все тогда получится
- в чате не будет регистрации, а следовательно админов и т.д., для простоты реализации и понятности...
UML диаграмма последовательности
Итак, начнем.
заглав пага у нас будет index.html куда и будет попадать юзер при заходе на chat.test1.ru допустим ):
index.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"> <html> <frameset rows="0,50,*" onunload='alert( "выход" );'> <frame noresize frameborder="0" name="dummy" src="dummy.php" > <frame noresize frameborder="0" name="chat" src="input.php" > <frameset cols="200,*" onunload='alert( "выход" );'> <frame noresize frameborder="0" name="nicklist" src="users.php" > <frame noresize frameborder="0" name="main" src="main.php" > </frameset> </frameset> </html>
обьясняю - это страница фреймсет - набор фреймов,
- первый фрейм, с нулевой высотой - "драйвер"...он будет перегружатся каждые...ну скажем 10 секунд, и проверять новые сообщения...пользователей убирать по тайм ауту и т.д.
- второй фрейм ссылается на input.php..простенький скрипт, который будет принимать мессаги от юзера и пиндюрить их в БД нашу (кстати...)
- третий - список ников...с js ссылками на вставку в input поле
- ну и четвертый - где будут выводится все сообщения....
<
p>для чата нам понадобятся всего две таблицы (да, да ))):
CREATE TABLE `chat` ( `userid` int(10) unsigned NOT NULL default '0', `message` varchar(255) NOT NULL default '0', `date` int(10) unsigned NOT NULL default '0', KEY `userid` (`userid`) ) TYPE=MyISAM; CREATE TABLE `user` ( `username` varchar(50) default NULL, `userid` int(10) unsigned NOT NULL auto_increment, `lastactivity` int(10) unsigned NOT NULL default '0', `lastupdate` int(10) unsigned NOT NULL default '0', PRIMARY KEY (`userid`) ) TYPE=MyISAM;
тут кажется должно быть просто:
chat - три поля:
- номер юзера (хотя надо было бы заносить имя а не ссылку на таблицу юзеров, так как при выходе стирается запись из user на которую будет ссылатся chat, ну да не страшно....
- сам текст сообщения
- и время его...
user
- имя,
- номер,
- последняя активность (для определения диссконнекта)
- последний апдейт сообщений (чтобы проверять на наличие новых)
- 1
- 2
- 3
- 4
- 5
- следующая ›
- последняя »
Новые записи в блогах
- Building myGUI on amd64 (x64) error in SkinTextureControl
- Как использовать PDF читалку от Google Chrome в Chromium
- Делаем псевдонимы хостов для ssh
- Немного апокалиптики
- 10 самых разыскиваемых вещей Drupal-разработчиками
- Как сделать нумерованный HTML список с обратным отчетом через CSS
- Пример обработки XML в BASH
- Conky мой простейший виджет мониторинга сети
- Катаюсь
- Мгновенное создание UML-диаграмм последовательности
Сейчас на сайте
Сейчас на сайте 0 пользователей и 3 гостя.
Архивы
- Февраль 2002 (2)
- Апрель 2002 (1)
- Июль 2002 (2)
- Декабрь 2002 (1)
- Март 2003 (3)
- Июнь 2003 (1)
- Октябрь 2003 (3)
- Ноябрь 2003 (1)
- Декабрь 2003 (1)
- Август 2004 (1)
Популярное содержимое
- Создание сайтов (27,775)
- Крылатые латинские выражения (20,387)
- Судоку - бесплатное решение онлайн (12,782)
- Пишем свой чат на PHP (8,835)
- Судоку - решений решатель (5,259)
- Undelete restore Compact Flash за 5 минут (4,966)
- X over SSH or remote Gnome on local KDE (3,799)
- Оптимизация web сервера (3,785)
- Как сделать сайт (3,394)
- Сжатие javascript (2,820)
Метки
webmin
ssl
ubuntu 7.10
климат
CSS
ubuntu
ajax
чужое
drupal 6
apache
защита информации
html
оси зла
pppoe
капитализм
Gnome
javascript
миграция с windows на linux
латынь
bugs
java
bash
головоломки
web
bitrix
c++
Запад
свобода
compiz
климат Земли
xslt
Авторское право
Россия
mssql
linux
debug
google
proxy
coding
drupal 5
howto
python
KDE
dle
debian
mysql
openbox
Глобальное потепление
php
cairo
CMS
пресса
юмор
sh
visual c++
software
X
joomla
rrdtool
о жизни
monitoring
drupal
xaraya
оптимизация
scripts
lua
ssh
apt
xml
Комментарии
таймаут
немного не понял принцип работы таймаута
Технологии
Технологии ускакали далеко вперед за эти года, статья была написана в 2004 году, а сам скрипт в 2003 в качестве прототипа.
Если имелся ввиду таймаут на удаление пользователей, то принцип таймаута был простой -
При очередном обновлении dummy фрейма и дергания dummy.php, вычислялась точка времени, находящаяся в прошлом на 5 минут от текущего момента.
$now = mktime() - 5 * 60;и далее делалась попытка удалить из таблиц сообщений и пользователей все что старше этой метки. Если такие записи были, то:Поставил этот чат у себя на
Поставил этот чат у себя на компе. К сожалению не работает автообновление окна чата и списка юзеров. Окно чата обновляется если только что-либо написать в чат. Если юзер ничего не пишет, то он не видит, что написали другие.
Список юзеров обновляется - только если вручную обновить фрейм.
да эм. славный 2003! :)
С Новым Годом, россияне.
Ну и все остальные хорошие люди дважды.
А хорошие россияне - трижды!
Спасибо!!
Спасибо огромное))) Очень хорошо и подробно все описано теперь все понятно а то по книгам ничего не понятно видимо автор непутевый или я тупил)))... побольшебы таких скриптов с подробным описанием его создания))))
Отправить комментарий