« Поставить закладку » « Сделать стартовой »

« Форумы » « Блоги » « Статьи » « Новости » « Файлы » « Realcoding IRC » « Site map » « Поиск »


Главная Главная
Анонсы Анонсы
Форумы Форумы
Каталог Каталог
Поиск Поиск
Опросы Опросы
Книжный магазин Книжный магазин
Реклама на сайте
Публикации Публикации
Партнеры Партнеры
Карта Карта сайта
Рассылки Рассылки
RSS экспорт
Настройки Настройки
О нас пишут О нас пишут
Контакты Контакты
Гостевая книга Гостевая книга


ПнВтСрЧтПтСбВс
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
    Популярное
Отображение типов индексов мастером наращивания

Синхронизация потоков в OC Linux

Этикет общения с работодателем. Как произвести благоприятное впечатление и стать желанным кандидатом.

Функция AccessResource

Прямые ссылки на AJAX веб-сайтах – наша технология Fullajax Direct Link

Общение между запущенными копиями своих программ.

ADODB – русская документация (часть 1)

Функция SetMetaFileBits

Создание псевдонима с указанием пути к папке с базой

Советы по написанию хороших программ




    Архив файлов



    Сообщества

    Документация

    Кто на сайте
Вы не зарегистрированы.
Имя:

Пароль:

Запомнить

Регистрация позволит Вам пользоваться дополнительными сервисами.
Сейчас на сайте:
Гостей: 171
Пользователей: 0

Статьи:: Интернет технологии :: PHP :: Технологии чата – новые возможности



отправить ссылку другу версия для печати  Обсудить на форуме

Технологии чата – новые возможности



Долго, очень долго приходится искать в сети достаточно хороший чат. Вы можете поспорить с таким утверждением, и в чем-то конечно окажетесь правы, так как чатами Интернет буквально переполнен. И найти себе по вкусу место общения можно легко и быстро. Но! Если Вы захотите завести такое место у себя на собственном сайте, Вам придется согласиться со мной – нелегко найти в сети достаточно хороший чат.  
 
После того, как свет увидела статья «Технологии чата», мне пришло немало писем. Очень во многих – просьба более подробно остановиться на некоторых моментах, которые не попали в статью. Например, часто встречается вопрос об возможности функционирования персональных комнат (так называемый приват) в чате. Этим вопросом мы сейчас и займемся...  
Вступление в тему  
 
Для начала, давайте сформулируем задачи и цели, а так же обговорим необходимые условия для их достижения. Нам надо на базе готового чата создать максимально защищенное пространство для переписки между двумя индивидуумами. Как непременное условие – уже готовый чат с возможностью регистрации и парольного входа. То есть - ники в чате должны быть закреплены персонально, иначе теряется смысл привата. Еще нам понадобится знание того языка программирования, на котором сделан Ваш чат. Если Вы смогли сделать его сами, это будет большим плюсом (тут имеет смысл отослать Вас к статье «Технологии чата»). Если Вы воспользовались чем-то бесплатным из Интернета, придется для начала полностью разобраться с работой чужой программы. Чаще всего это сложнее, чем написать свою собственную. Сам язык программирования практически не играет никакой роли, так как я буду рассматривать только теоретические аспекты проблемы. А переложить все это на код будет уже не трудно. Для примеров я буду использовать язык РНР, как наиболее простой и доступный. Не настаиваю на законченности и достоверности моих суждений – все описанное тут есть мои собственные изыскания по теме, и я допускаю что существуют другие способы и алгоритмы реализации приватов в чате. Так же не берусь утверждать, что предлагаемое решение является идеальным. Помните, что все, что сделано одним человеком, может быть исследовано и переделано (взломано) другим :-)  
 
Первые мысли  
 
Но, так или иначе со вступлением покончено, и мы можем перейти к делу. Первое, что приходит на ум для решения поставленной задачи – это сделать с десяток простых чатов и использовать их под приваты, разрешив вход по паролю. Это самый простой, но и самый неверный путь. Если у Вас всего несколько посетителей одновременно в чате, то такой подход еще может быть оправдан, но если все Ваши приваты вдруг окажутся занятыми, а кто-то захочет еще… И увеличение количества готовых чатов не выход, так как всегда есть способ лучше. На самом деле, все гораздо элегантней. Незачем плодить чаты, достаточно сделать один, но работать он будет не с фиксированным файлом (куда пишутся сообщения, вводимые в чат), как происходит при работе обычного чата, а с динамическим. Точнее, файлы будут создаваться по мере надобности и таким образом снимается лимит на количество одновременно функционирующих приватов.  
 
В первую очередь нужно подумать о том, что именно будет служить именем для файла сообщений в привате. Неплохой вариант – комбинация ника и пароля. Только не прямая, конечно, комбинация, а как-либо зашифрованная. Еще вариант – генерация уникального имени в каталоге. Такую возможность предоставляют многие языки программирования (например, РНР конечно). Если нет такой возможности – можно генерировать случайное число и использовать его для имени файла. Только… Эти способы не дают абсолютной гарантии уникальности. А имя файла для привата должно быть обязательно уникальным.  
 
Ну конечно, у меня есть для Вас готовое решение :-) Способ генерации уникального имени до безобразия прост. Нужно использовать функцию времени, прошедшего с начала эпохи UNIX…  
 
О времени UNIX  
 
Давным-давно, когда компьютеры еще были очень большими, а программы очень маленькими, появилась необходимость отсчитывать время. Так или иначе, но у программистов прижился метод отсчета времени UNIX. Начинает свой отсчет это время с 1 января 1970 года. Первая секунда этой даты считается первой, вторая – второй и т.д. На сегодня набежало уже достаточно большое число, но это не страшно для нас, так как вручную считать нам не приходится. Важно, что время UNIX есть количество секунд (кстати, не только секунд – ведется подсчет и миллисекунд), прошедшее с 1 января 1970 года.  
 
Вот это количество секунд служит идеальным генератором случайных имен файлов для персональных комнат в чате. Главное в нем – это уникальность имени. А сформировать такое имя очень просто – достаточно считать (для этого во всех современных языках программирования есть специальные функции) показания секундомера UNIX, и склеить полученное значение со строкой, включающей в себя точку и расширение, которое Вы хотите видеть у файла с сообщениями привата.  
 
Кстати, к расширению стоит отнестись ответственно. Проще всего выбрать его, конечно, стандартным ( .txt , например…), но я бы рекомендовал использовать дополнительные возможности, которые дает нам сервер при использовании динамических страниц. Как правило, сервер не позволяет извне просматривать код некоторых файлов, и их расширения нам никто не запрещает использовать в своих целя. Для примера я опять же воспользуюсь примером РНР.  
 
О расширениях в РНР  
 
Для того, чтобы сервер узнал, есть в файле код РНР или нет, изменяют расширение файла. Если обычно используется расширение .htm или .html, то в РНР Вы должны будете использовать несколько другие – например: .phtml, .php, .php3 или другие, в зависимости от настроек сервера. Так или иначе, но файл с расширением РНР уже не будет доступен в том виде, в котором он существует на сервере. Любой код РНР будет скрыт, а в браузер пойдет только результат работы скрипта-программы. Если только… этот результат есть. Например, в коде РНР очень удобно прятать комментарии к коду HTML. Клиенту такой комментарий не передается, а самому понятно что, где и как. Так вот, если весь файл РНР состоит из одного комментария, браузер посетителя так ничего и не получит.  
 
Вот такое место удобно использовать для сокрытия информации. Для этого обзовем наш файл расширением РНР, а в его первой строке откроем комментарий (в РНР это будет выглядеть так: <? /* ). Таким образом, если даже имя файла каким-либо образом станет известно, получить из него информацию будет несколько трудновато, ведь комментарий РНР не передается браузеру! Это дает дополнительную гарантию конфиденциальности. Кстати, заботиться о закрытии комментария не стоит, так как реально файл не будет никогда исполняться, а если кто-то обратится непосредственно к нему, сервер вернет ошибку. Что, в принципе, нас устраивает. Мы же в полой мере сможем писать в такой файл и выводить его на экран в приватный чат. Собственно, для нас вообще не имеет значения расширение, единственное что надо помнить – это о первой строке, уже занятой под тег открытия кода и под комментарий.  
 
Эта же строка нам понадобится для авторизации. В нее нужно дописать ники двух пользователей, которым доступен именно этот файл с сообщениями. Каждый раз, при авторизации, нужно проверять, совпадают ли имена входящих в чат с теми, что записаны в этой строке и на основании полученных данных пропускать или нет в приват посетителя. Рассмотрим эту технологию подробней…  
 
О том, как приглашать в приват  
 
Для приглашения в приват может использоваться или ссылка, или кнопка – это дело вкуса и возможностей. Нажав на такую ссылку, посетитель попадает на страничку, где ему предлагают выбрать, кого именно из присутствующих в чате в данный момент он желает пригласить в приват. Конечно, технологию отображения присутствующих чат должен поддерживать, иначе придется предлагать выбор из всех зарегистрированных ников, что будет просто некрасиво с нашей стороны. По ссылке нужно передать методом GET данные, авторизовывающие человека, открывающего чат. По кнопке – можно использовать (я бы даже сказал – лучше) метод POST. Впрочем, никто не запрещает заставить ввести лишний раз пароль. Это не суть важно. На этом этапе обязательно нужно проверить, есть ли такие пользователи среди зарегистрированных в чате – это чтобы заблокировать возможность несанкционированного входа. Тут же можно предоставить входящему возможность немного настроить свой чат – выбрать цвет, скорость обновления и т.д.  
 
Когда все что нужно выбрано (самое главное – кого пригласить в чат), посетитель жмет на кнопку входа, и запускается программа генерации привата.  
 
Как сделать персональную комнату  
 
Будьте внимательны, так как мы перешли к важным вещам. Сначала, как и всегда, нужно проверить правильность пароля и ника. Если все нормально, и такой пользователь зарегистрирован, переходим к тому, кого он пригласил. Эту персону тоже надо проверить. Ну, например на факт присутствия в чате. Если это дело прошло успешно, двигаемся дальше.  
 
Нужно сформировать данные для авторизации. Для этого считываем время UNIX (тут и дальше примеры на РНР):  
 
$time = time(void);  
 
Определяем имя файла, используя любой путь к файлу:  
 
$file = "любой путь".$time.".phtml";  
 
Формируем строку для записи в несуществующий пока файл:  
 
$sav = "<? /* * $person * для * $kto * \n";  
 
Где в переменных $person и $kto хранятся соответственно ники приглашающего и приглашенного в приват. И – записываем строку $sav в файл специальной командой. Надо сказать, что подобные команды устроены таким образом, что если файл не существует, он создается. Но! Создаваться от будет только в том случае, если на каталоге, где он создается, установлены соответствующие права.  
 
Немного о правах  
 
Без этого тоже далеко мы не уйдем, так что прежде давайте рассмотрим что такое права доступа (кому проще – атрибуты). Если Вы работаете в системе, основанной на WINDOWS, можете забыть о правах и пропускать данный абзац, но так как большинство серверов в Интернет работают на других, более стабильных платформах :-) , Вам надо знать следующее. У каждого файла в сети есть права доступа. Устанавливать их может только хозяин, или его программы. Проще всего для смены атрибутов воспользоваться любой FTP-программой. Они, как правило, все поддерживают такую возможность. Для примера могу предложить WINDOWS COMMANDER. Это, конечно, не FTP программа в полной мере, но базовые функции выполняются очень хорошо.  
 
Сделать нужно следующее. Создать новое FTP подключение, подключиться к удаленному серверу (конечно, Вам понадобится логин и пароль), указать на какой либо файл или каталог (в нашем случае Вы должны будете выбрать тот каталог, в который будут записываться файлы приватов). В меню ФАЙЛ выбрать пункт ИЗМЕНИТЬ АТРИБУТЫ. В появившемся окошке надо установить все галочки. Дальше – ОК, как обычно. Все!  
 
Как связаться с приглашенным  
 
Ну, тут можно воспользоваться самым простым методом. Выдать приглашение в основной чат. Только кроме самого приглашения передать кое какие параметры. Все должно быть оформлено в виде ссылки, что бы приглашенный мог просто нажать на нее, ввести в открывшейся страничке пароль и сразу попасть в приват. Но вернемся к параметрам. Конечно, передаваться в ссылке на приглашение должно имя файла привата, сгенерированное с помощью функции времени UNIX. Но передавать его просто так в открытом виде нельзя. Тут придется применить любой из обратимых методов шифрования. Если сделать проще – можно выполнить ряд обратимых арифметических действий. Ведь передавать нужно простое число, которое можно сложить с другим. Это – на Ваше усмотрение. Кроме зашифрованного имени файла надо передать идентификатор приглашенного, что бы никто кроме него не мог попасть в приват. Тут будет сложнее. Я рекомендую воспользоваться тем методом, на основе которого реализована авторизация в чате. А можно придумать что-нибудь еще. В принципе, можно передавать и сам ник, мы предусмотрели дополнительную защиту от чужого проникновения в приват, когда записали ники имеющих право войти в него в первую строчку файла привата.  
 
Последняя стадия авторизации  
 
Мы подошли к последней из авторизаций перед входом в чат. Собственно, ничего необычного на этом этапе не намечается. Приглашенному в приват тоже можно дать возможность настроить его под себя, конечно проверка пароля и всяких там учетных записей, и наконец если все нормально – можно разрешить вход в чат. Только не забудьте расшифровать имя файла привата. Его, как и ник входящего, надо передать в чат методом GET. Это нужно для того, что бы приват мог каждый раз отслеживать и идентифицировать эти данные.  
 
О самом главном  
 
Вот, собственно, и все. Осталось упомянуть о том, что при работе привата надо каждый раз проверять соответствие ников вошедших с теми, что записаны в файле привата. Имя файла не должно появляться в ссылках ни на одном из этапов входа в приват. Пользуйтесь везде разными формулами для скрытия истинного числа – имени файла привата. Генерируйте каждый раз новую формулу, если только придумаете, как.  
 
Сам чат для привата стоит выбрать как можно проще и быстрее. Люди приходят туда не за наворотами, а спокойно поговорить в полной уверенности, что их не подслушают. Хорошим тоном считается наличие кнопочки, очищающей разговоры в привате. Еще лучше, если после выхода файл будет удаляться с сервера. Но это – на выбор, все равно не каждый будет перед выходом жать на специальную кнопку, гарантирующую удаление записей.  
 
Проявите свою фантазию, и попробуйте усовершенствовать приведенную схему. Если Вы хотите посмотреть на работу описанного механизма в живую, это можно сделать тут: http://virtual.bresttelecom.by. Дальше по ссылке ЧАТ САЙТА.  
 
Андрей Кухарчик  
http://virtual.bresttelecom.by  
virtualbrest@tut.by



Рубрика: PHP




HTML 5: пять вещей вызывающих особый интер....

Html

HTML 5 — это грядущее обновление гипертекстового языка разметки, основного способа создания контента для размещения его во всемирной паутине. Разработка HTML остановилась в 1999 году, на версии HTML 4.01 и с тех пор web-содержимое изменилось так, что текущие спецификации HTML перестали соответствовать сегодняшним требованиям. HTML 5 нацелен на то, чтобы увеличить функциональную совместимость HTML и соответствовать растущим требованиям разнообразного и смешанного web-контента. HTML 5 так же нацелен на устранение недостатков четвертой версии. В этой статье мы взглянем на 5 новых интересных вещей в HTML 5.


Подробнее... | Рубрика: Html | Добавлено: 22.12.2008

asp.net: ListView с разных сторон.

.NET компоненты

Элемент управления ListView был представлен в .Net Framework 3.5 как замена устаревшему GridView. Новый элемент имеет более расширенный функционал, чем его предшественник, но в тоже время лишен некоторых внутренних механизмов, что впрочем целиком следствие из расширенной универсальности ListView. Среди отличий ListView и GridView можно назвать и гибкую настройку разметки, что позволяет выводить данные не только в табличном виде, но и вообще в любом каком пожелает программист. Благодаря шаблонам ItemTemplate, EditItemTemplate, InsertItemTeplate можно настроить внешний вид при любом из состояний ListView: редактировании или выборе элемента.


Подробнее... | Рубрика: .NET компоненты | Добавлено: 22.12.2008

Создание кросс-таб отчета в Stimulsoft Rep....

.NET компоненты

Компания Стимулсофт предоставляет для разработчиков мощный набор инструментов для создания отчетов для Microsoft Visual Studio .Net 2005 и 2008; эти инструменты доступны как для Windows Forms, так и для Web Forms. Это генератор отчетов Stimulsoft Reports.Net. Генератор отчетов Stimulsoft Reports.Net имеет ряд особенностей: простая работа с дизайнером отчетов, полная поддержка экспорта в PDF, Word, Excel и многие другие форматы. Crystal Report и Microsoft Reporting Service – очень хорошие программные продукты для повседневной работы, но, если Вам необходимо создать отчеты с поддержкой кросс-табов, drill down, Ajax, штрих-кодов и возможностью подключения одновременно более одного источника данных, то Stimulsoft Reports.Net поможет Вам сэкономить массу времени. Также, данный генератор отчетов позволяет пользователям создавать свои собственные отчеты любой сложности. И все эти особенности делают Stimulsoft Reports.Net хорошим выбором в сфере программных продуктов для Business Intelligence.


Подробнее... | Рубрика: .NET компоненты | Добавлено: 22.12.2008

Остальные статьи:

VivaMP - инструмент для OpenMP
Создаем контекстно-зависимое WPF-приложени...
Windows Vista SP2: что внутри и что важно?
Вышел MySQL 5.1.30, первый стабильный рели...
Тестирование параллельных программ
Архитектура AMD64 (EM64T)
Платформа 2009. Определяя будущее
Windows Vista Bridge Sample Library - упра...
Оптимизация 64-битных программ
Подгрузка через AJAX HTML-кода, содержащег...
Обзор нового релиза самой мощной Ajax библ...
Firebug 1.3 и 1.4 alpha — что нового и инт...
Релиз Microsoft Silverlight 2.0. Что новог...
XML документация в C#
Курсоры в MySQL 5
Microsoft опубликовала подробности о сесси...
Microsoft делится подробностями о том, что...
Тестируем новый javascript от нового брауз...
MySQL Query Cache
Использование провайдеров компиляции в As...


Цитата дня (все,добавить):

Портал фрилансеров

работа на дому


    Рубрикатор

Программирование

C/С++
Обучение
Windows API
XAML
Моделирование
Паттерны
Visual Basic 7 .NET
WxWidgets
Функции WinApi
Функции С++
Разработка под Mac OS
Eiffel
Visual Studio 2008
UI дизайн
Алгоритмы
Конкурсные статьи
Turbo Pascal
Visual Studio
CASE-средства
Visual Studio 2005
Без VCL
Delphi
Тех. документация
Тестирование
Software Testing
ООП
TCP/IP
Google Android
Windows Installer
.NET Framework
Драйвера
C# C Sharp
Справка
Проектирование
Информ. системы
Visual Basic
Assembler
Оптимизация кода
Gtk+
Компоненты
Реинжиниринг
Управление проектами
Extreeme programming
Lotus Notes
Алгебраическое проектирование


Интернет технологии

PHP
Perl
ASP
WAP
Cookies
SSI
CGI
Web Servers
VB Script
DNS
CSS
XML
Html
Java Script
Java2ME
Firewall
Flash
.htaccess
Apache
VRML
Протоколы
Поисковые системы
Технология JAVA
Учебник по PHP
Учебник по JavaScript
Учебник по XML
Java Q&A
AJAX
DHTML
XHTML
Dreamweaver
Web 2.0
Python
Вебмастеру
Cisco
Ruby on Rails
Silverlight

Базы данных

Access
InterBase
MySQL
Oracle
ADO .NET
Основы SQL
Учебник по Access 2002
MS
Microsoft FoxPro
Доступ к данным
XML в MS SQL Server 2000
ODBC и MyODBC
Обучение
Caché
DB2
PostgresSQL
Sybase
Теория
Хранилища данных
Безопасность
Реляционные данные
MySQL и mSQL

Остальное:

Разное
Обзоры книг
Безопасность
Графика и дизайн
Юмор
Linux
Фракталы
Microsoft Axapta
Многоядерность
Сети
Microsoft Office
Работа
MS-DOS
Криптография
Графика и игроделание
Новости SDK
Системы защиты
Учебник по AutoCad
CVS
Windows XP
Windows Server 2003
Windows Vista
Windows 7
Мероприятия