Технології чату – нові можливості, 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 зберігаються відповідно ники запрошує і запрошеного в приват. І записуємо рядок $ sav в файл спеціальної командою. Треба сказати, що подібні команди влаштовані таким чином, що якщо файл не існує, він створюється. Але! Створюватися він буде тільки в тому випадку, якщо на каталозі, де він створюється, встановлені відповідні права.
Трохи про права
Без цього теж далеко ми не підемо, так що перш давайте розглянемо, що таке права доступу (кому простіше – атрибути). Якщо Ви працюєте в системі, заснованої на Windows, можете забути про права і пропускати даний абзац, але так як більшість серверів в Інтернет працюють на інших, більш стабільних платформах :), Вам треба знати наступне. У кожного файлу в мережі є права доступу. Встановлювати їх може тільки господар або його програми. Найпростіше для зміни атрибутів скористатися будь FTP-програмою. Вони, як правило, всі підтримують таку можливість. Для прикладу можу запропонувати Windows Commander. Це, звичайно, не FTP-програма в повній мірі, але базові функції виконуються дуже добре.
Зробити потрібно наступне. Створити нове FTP підключення, підключитися до віддаленого серверу (звичайно, Вам знадобиться логін і пароль), вказати на який-небудь файл або каталог (в нашому випадку Ви повинні будете вибрати той каталог, в який будуть записуватися файли приватов). В меню ФАЙЛ вибрати пункт ЗМІНИТИ АТРИБУТИ. У віконці, що з’явилося треба встановити всі галочки. Далі – ОК, як звичайно. Все!
Зв’язок із запрошеним
Ну, тут можна скористатися найпростішим методом – видати запрошення в основний чат. Тільки крім самого запрошення передати деякі параметри. Все має бути оформлено у вигляді посилання, щоб запрошений міг просто натиснути на неї, ввести в відкрилася сторінці пароль і відразу потрапити в приват.
Але повернемося до параметрів. Звичайно, передаватися на засланні на запрошення має ім’я файлу Привату, сгенерированное за допомогою функції часу UNIX. Але передавати його просто так у відкритому вигляді не можна. Тут доведеться застосувати будь-який з оборотних методів шифрування. Можна зробити простіше – виконати ряд оборотних арифметичних дій. Адже передавати потрібно просте число, яке можна скласти з іншим. Це на Ваше розсуд.
Крім зашифрованого імені файлу, треба передати ідентифікатор запрошеного, щоб ніхто крім нього не міг потрапити в приват. Тут буде складніше. Я рекомендую скористатися тим методом, на основі якого реалізована авторизація в чаті. А можна придумати що-небудь ще. В принципі, можна передавати і сам нік, ми передбачили додатковий захист від чужого проникнення в приват, коли записали ники мають право увійти в нього в першу строчку файлу Привату.
Остання стадія авторизації
Ми підійшли до останньої з авторизацій перед входом в чат. Власне, нічого незвичайного на цьому етапі не намічається. Запрошеному в приват теж можна дати можливість налаштувати його під себе, звичайно, перевірка пароля і всяких там облікових записів, і, нарешті, якщо все нормально, можна дозволити вхід в чат. Тільки не забудьте розшифрувати ім’я файлу Привату. Його, як і нік вхідного, треба передати в чат методом GET. Це потрібно для того, щоб приват міг кожен раз відслідковувати та ідентифікувати ці дані.
Про найголовніше
Ось, власне, і все. Залишилося згадати про те, що при роботі Привату треба кожен раз перевіряти відповідність ників увійшли з тими, що записані у файлі Привату. Ім’я файлу не повинне з’являтися в посиланнях на жодному з етапів входу в приват. Користуйтеся скрізь різними формулами для приховування істинного числа – імені файлу Привату. Генерує кожен раз нову формулу, якщо тільки придумаєте, як.
Сам чат для Привату варто вибрати якомога простіше і швидше. Люди приходять туди не за наворотами, а спокійно поговорити в повній впевненості, що їх не підслухають. Хорошим тоном вважається наявність кнопочки, очищає розмови в приваті. Ще краще, якщо після виходу файл буде віддалятися з сервера. Але це на вибір, все одно не кожен буде перед виходом жати на спеціальну кнопку, яка гарантує видалення записів.
Проявіть свою фантазію і спробуйте вдосконалити наведену схему. Якщо Ви хочете подивитися на роботу описаного механізму в живу, це можна зробити тут: 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>

*

*