Технології чату – нові можливості

Андрій Кухарчик

Довго, дуже довго доводиться шукати в мережі досить хороший чат. Ви
можете посперечатися з таким твердженням, і в чомусь, звичайно, виявитеся праві,
так як чатами Інтернет буквально переповнений. І знайти собі до смаку місце
спілкування можна легко і швидко. Але! Якщо Ви захочете завести таке місце у себе
на власному сайті, Вам доведеться погодитися зі мною – нелегко знайти в мережі
досить хороший чат.
Після того, як світ побачила стаття "Технології
чату ", мені прийшло чимало листів. Дуже в багатьох – прохання детальніше
зупинитися на деяких моментах, які не потрапили до статті. Наприклад,
часто зустрічається питання про можливість функціонування персональних кімнат
(Так званий приват) в чаті. Цим питанням ми зараз і займемося
ближче.

Вступ до теми
Для початку давайте сформулюємо
завдання і цілі, а також обговоримо необхідні умови для їх досягнення. Нам
треба на базі готового чату створити максимально захищений простір для
листування між двома індивідуумами. Як неодмінна умова – уже готовий чат
з можливістю реєстрації та парольного входу. Тобто, ники в чаті повинні
бути закріплені персонально, інакше втрачається сенс Привату. Ще нам знадобиться
знання тієї мови програмування, на якому зроблений Ваш чат.
Якщо
Ви змогли зробити його самі, це буде великим плюсом (тут має сенс відіслати
Вас до статті "Технології чату"). Якщо Ви скористалися чимось безкоштовним з
Інтернету, доведеться для початку повністю розібратися з роботою чужий
програми. Найчастіше це складніше, ніж написати свою власну. Сама мова
програмування практично не грає ніякої ролі, так як я буду
розглядати тільки теоретичні аспекти проблеми. А перекласти все це на
код буде вже не важко. Для прикладів я буду використовувати мову РНР, як
найбільш простий і доступний. Не наполягаю на закінченості і достовірності
моїх думок – все описане тут є мої власні дослідження по темі, і я
припускаю, що існують інші способи та алгоритми реалізації приватов в
чаті. Також не беруся стверджувати, що пропоноване рішення є ідеальним.
Пам'ятайте, що все, що зроблено однією людиною, може бути досліджена і
перероблено (зламано) іншим:).

Перші думки
Так чи інакше,
зі вступом покінчено, і ми можемо перейти до справи. Перше, що спадає на
розум для вирішення поставленого завдання – це зробити з десяток простих чатів та
використовувати їх під привати, дозволивши вхід за паролем. Це найпростіший, але й
самий невірний шлях. Якщо у Вас всього декілька відвідувачів одночасно в
чаті, то такий підхід ще може бути виправданий, але якщо всі Ваші привати раптом
виявляться зайнятими, а хтось захоче ще … І збільшення кількості готових
чатів не вихід, тому що завжди є спосіб краще. Насправді, все набагато
елегантний. Нема чого плодити чати, досить зробити один, але працювати він
буде не з фіксованим файлом (куди пишуться повідомлення, що вводяться в чат), як
відбувається при роботі звичайного чату, а з динамічним. Точніше, файли будуть
створюватися в міру потреби, і таким чином знімається ліміт на кількість
одночасно функціонуючих приват.
У першу чергу потрібно подумати про
тому, що саме буде служити ім'ям для файлу повідомлень в приваті. Непоганий
варіант – комбінація ника і пароля. Тільки не пряма, звичайно, комбінація, а
як-небудь зашифрована. Ще варіант – генерація унікального імені в каталозі.
Таку можливість надають багато мов програмування (наприклад, РНР,
звичайно). Якщо немає такої можливості, можна генерувати випадкове число і
використовувати його для імені файлу. Тільки … Ці способи не дають абсолютної
гарантії унікальності. А ім'я файлу для Привату повинно бути обов'язково
унікальним.
Ну, звичайно, у мене є для Вас готове рішення:). Спосіб
створення унікального імені до неподобства простий. Потрібно використовувати функцію
часу, що пройшов з початку епохи 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/.
Далі за посиланням ЧАТ САЙТУ.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*