' . $name . '' . date( "d.m.Y H:i:s" ) . '
' . $text . '' . "\n\n"; //добавить эту, здесь добавлено (' . $id . ') // $msg = '
' . $name . '' . date( "d.m.Y H:i:s" ) . ' (' . $id . ')
' . $text . '
' . "\n\n"; mb_internal_encoding( "UTF-8" ); mb_http_output( "UTF-8" ); mb_http_input( "UTF-8" ); mb_language( "uni" ); mb_regex_encoding( "UTF-8" ); ob_start( "mb_output_handler" ); setlocale( LC_ALL, array( 'ru_RU.UTF-8', 'ru_RU.UTF8', 'ru_RU.65001' ), array( 'rus_RUS.UTF-8', 'rus_RUS.UTF8', 'rus_RUS.65001' ), array( 'Russian_Russia.UTF-8', 'Russian_Russia.UTF8', 'Russian_Russia.65001' ) ); setlocale( LC_NUMERIC, 'C' ); //in float number deilmiter = "." //Боремся с включенными magic quotes if ( function_exists( "get_magic_quotes_gpc" ) && get_magic_quotes_gpc() === 1 ) { $_COOKIE = array_map( "stripslashes", $_COOKIE ); $_POST = array_map( "stripslashes", $_POST ); } define( "DBFILE", realpath( str_replace( '\\', '/', __DIR__ ) ) . "/chat.db" ); //Путь и имя файла с чатом define( "REFRESHTIME", 5 * 1000 ); //Клиентская задержка опроса сервера define( "HEADER", "" ); //Заголовок define( "COOKIEPATH", "/" ); define( "CHATTRIM", 0 ); //Максимальная длина пересылаемого куска чата, 0 - без ограничений define( "MAXUSERNAMELEN", 64 ); //Максимальная длина имени пользователя define( "MAXUSERTEXTLEN", 1024 ); //Максимальная длина сообщения пользователя function makeURL( $matches ) { return '' . $matches[1] . ''; } function chatOut( $status = null, $chat = null ) { if ( $status !== null ) { $lastMod = filemtime( DBFILE ); if ( $lastMod === false ) $lastMod = 0; echo( "{$status}:$lastMod\n" ); } if ( $chat === null ) { if ( CHATTRIM ) { $f = fopen( DBFILE, "r" ); fseek( $f, -CHATTRIM, SEEK_END ); $chat = fread( $f, CHATTRIM ); fclose( $f ); $p = mb_strpos( $chat, '
?@\\[\\]^_`{|}~0-9a-zа-яё]\x07iu", "", $str ); $str = preg_replace( "~&~u", "&", $str ); $str = preg_replace( "~<~u", "<", $str ); $str = preg_replace( "~>~u", ">", $str ); $str = mb_substr( $str, 0, MAXUSERTEXTLEN ); $str = preg_replace( "~\n~u", "
", $str ); return $str; } $exit = false; $name = @$_POST["name"] ? $_POST["name"] : null; $text = @$_POST["text"]; $mode = null; switch( @$_POST["mode"] ) { case "post": $mode = "post"; break; case "list": $mode = "list"; break; } $cookieName = @$_COOKIE["userName"] ? $_COOKIE["userName"] : null; if ( $cookieName ) $cookieName = cleanName( $cookieName ); if ( !$name ) $name = $cookieName; if ( $text ) $text = cleanText( $text ); if ( $mode == "post" ) { if ( !$name || !$text ) { header( 'HTTP/1.1 400 Bad Request' ); exit( 0 ); } if ( !@empty( $_SERVER[ "HTTP_CLIENT_IP" ] ) ) $id = $_SERVER[ "HTTP_CLIENT_IP" ]; elseif ( !@empty( $_SERVER["HTTP_X_FORWARDED_FOR"] ) ) $id = $_SERVER["HTTP_X_FORWARDED_FOR"]; else $id = @$_SERVER["REMOTE_ADDR"]; $exit = true; if ( $name != $cookieName ) setcookie( "userName", $name, mktime( 0, 0, 0, 12, 31, 3000 ), COOKIEPATH ); $text = preg_replace_callback( "\x07((?:[a-z]+://(?:www\\.)?)[_.+!*'(),/:@~=?&$%a-z0-9\\-]+)\x07iu", "makeURL", $text ); $msg = '
' . $name . '' . date( "d.m.Y H:i:s" ) . '
' . $text . '
' . "\n\n"; file_put_contents( DBFILE, $msg, FILE_APPEND ); $mode = "list"; } if ( $mode == "list" ) { $exit = true; $rlm = preg_match( "~^\\d+$~u", @$_POST["lastMod"] ) ? (int)$_POST["lastMod"] : 0; $lastMod = filemtime( DBFILE ); if ( $lastMod === false ) $lastMod = 0; if ( $rlm == $lastMod ) chatOut( "NONMODIFIED", "" ); else chatOut( "OK", null ); } if ( $exit ) exit( 0 ); $lastMod = filemtime( DBFILE ); if ( $lastMod === false ) $lastMod = 0; ?> Общий Чат