Пишем свой чат на PHP - Основной скрипт, и заключение
итак:
main.php
<?php /** * Main script that will logon and logout users * * Скрипт, который будет логинить и разлогинивать * пользователей */ error_reporting( E_ALL ^ E_NOTICE ); session_start(); session_register( "userid" ); @$action = $_GET['action']; include 'functions.php'; include 'global.php'; global $user; echo "<html><body>"; if( empty( $_SESSION['userid'] ) ) { if( 'POST' == $_SERVER['REQUEST_METHOD'] ) {//catch incoming nick if( !empty( $_POST['username'] ) ) {//check for existence $query = "SELECT `userid` FROM `user` WHERE `username` = '".htmlspecialchars( $_POST['username'] )."'"; $r = mysql_query( $query ) or exit( __FILE__." (".__LINE__.") ".$query ); if( mysql_num_rows( $r ) ) {//if exists echo "<center>Уже есть</center>"; } else {//reg $query = "INSERT INTO `user` ( `username`, `lastactivity` ) VALUES ( '".htmlspecialchars( $_POST['username'] )."',".mktime()." )"; mysql_query( $query ) or exit( __FILE__." (".__LINE__.") ".$query ); $_SESSION['userid'] = mysql_insert_id(); echo "<center>Привет, $_POST[username]</center>". setlocation( 'chat', 0, 'input.php' ). setlocation( 'main', 2, 'main.php' ); echo "</body></html>"; $query = "INSERT INTO `chat` VALUES ( $_SESSION[userid], 'я пришел!!!!', '".mktime()."' )"; @mysql_query( $query ); }//if( mysql_num_rows( $r ) ) }//if( !empty( $_POST['username'] ) ) } else { echo "<form method='POST'> <input type='text' name='username' size='30' /> <input type='submit' value='Enter' /> </form> </body></html>"; }//if( 'POST' == $_SERVER['REQUEST_METHOD'] ) exit; }//if( empty( $_SESSION['userid'] ) ) if( "exit" == $action ) { session_destroy(); $query = "INSERT INTO `chat` VALUES ( $user[userid], 'я ушел!!!!', '".mktime()."' )"; @mysql_query( $query ); $query = "DELETE FROM `user` WHERE `userid`='$user[userid]'"; mysql_query( $query ); echo setlocation( 'main', 0, 'main.php' ); exit; }//if( "exit" == $action ) echo "<center>Чат для $user[username] <a href='main.php?action=exit'>выйти</a></center>"; $query = "SELECT * FROM `chat` LEFT JOIN `user` USING (`userid`) ORDER BY `date` DESC"; $result = mysql_query ( $query ) or die ( "Query failed: $query" ); echo "<ul>".PHP_EOL; while( $line = mysql_fetch_assoc( $result ) ) { echo "<li><span class='ts'>".getdatestring( $line['date'] )."</span> <span class='un'>$line[username]:</span> <span class='msg'>$line[message]</span></li>"; }//while print "</ul>".PHP_EOL; mysql_free_result( $result ); $query = "UPDATE `user` SET `lastupdate` = '".mktime()."' WHERE `userid` = $_SESSION[userid] "; @mysql_query( $query ); echo "</body></html>"; ?>
ну вот....все скрипты...
ничего сложного ;)
Установка на рабочий сервер занимает около 1 минуты, если, конечно, знать что делать.
Загружаем дамп таблиц в БД,
Настраиваем global.php - прописываем данные для доступа к БД
И смотрим в броузере.
Actual
- Крылатые латинские выражения (399)
- Судоку - бесплатное решение онлайн (39)
- Пишем свой чат на PHP (28)
- Как сделать сайт (21)
- Создание сайтов (19)
Recent blog posts
- Conky rings #2
- Conky rings #1
- Instant creation uml sequence diagrams
- How to make wine + totalcmd associate files with KDE applications
- X over SSH or remote Gnome on local KDE
- Sudoku - free online solver
- Next simple tool
- Patch for code_swarm
- Граф зависимостей пакетов в debian
- Zend Optimizer 3.3 и PHP5 не подружились сразу?
Who's online
There are currently 0 users and 3 guests online.
Monthly archive
- February 2002 (2)
- April 2002 (1)
- July 2002 (2)
- December 2002 (1)
- March 2003 (3)
- June 2003 (1)
- October 2003 (3)
- November 2003 (1)
- December 2003 (1)
- August 2004 (1)
Popular content
- Создание сайтов (27,869)
- Крылатые латинские выражения (22,840)
- Судоку - бесплатное решение онлайн (12,983)
- Пишем свой чат на PHP (9,031)
- Судоку - решений решатель (5,332)
- Undelete restore Compact Flash за 5 минут (5,017)
- X over SSH or remote Gnome on local KDE (3,854)
- Оптимизация web сервера (3,852)
- Как сделать сайт (3,456)
- Сжатие javascript (2,878)
Tags
php
CMS
google
software
миграция с windows на linux
ssh
юмор
pppoe
python
защита информации
bash
латынь
xml
капитализм
drupal 6
compiz
оптимизация
java
Россия
cairo
головоломки
bitrix
о жизни
coding
howto
bugs
пресса
sh
drupal 5
mysql
оси зла
scripts
debug
ssl
климат Земли
ubuntu 7.10
dle
xslt
apt
joomla
чужое
c++
html
lua
Авторское право
климат
X
web
openbox
debian
rrdtool
visual c++
CSS
mssql
javascript
webmin
drupal
Запад
ajax
monitoring
xaraya
Gnome
Глобальное потепление
ubuntu
proxy
KDE
linux
свобода
apache
Comments
таймаут
немного не понял принцип работы таймаута
Технологии
Технологии ускакали далеко вперед за эти года, статья была написана в 2004 году, а сам скрипт в 2003 в качестве прототипа.
Если имелся ввиду таймаут на удаление пользователей, то принцип таймаута был простой -
При очередном обновлении dummy фрейма и дергания dummy.php, вычислялась точка времени, находящаяся в прошлом на 5 минут от текущего момента.
$now = mktime() - 5 * 60;и далее делалась попытка удалить из таблиц сообщений и пользователей все что старше этой метки. Если такие записи были, то:Поставил этот чат у себя на
Поставил этот чат у себя на компе. К сожалению не работает автообновление окна чата и списка юзеров. Окно чата обновляется если только что-либо написать в чат. Если юзер ничего не пишет, то он не видит, что написали другие.
Список юзеров обновляется - только если вручную обновить фрейм.
да эм. славный 2003! :)
С Новым Годом, россияне.
Ну и все остальные хорошие люди дважды.
А хорошие россияне - трижды!
Спасибо!!
Спасибо огромное))) Очень хорошо и подробно все описано теперь все понятно а то по книгам ничего не понятно видимо автор непутевый или я тупил)))... побольшебы таких скриптов с подробным описанием его создания))))
Post new comment