Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Программируем на PHP - вопросы и ответы.


Служба Рассылок Subscribe.Ru

Здравствуйте! Выпуск номер 41
рассылки сайта РНР для всех!

Вы получили этот выпуск рассылки, так как являетесь подписчиком рассылок сайта http://subscribe.ru Рассылка выходит еженедельно, и предлагает Вам авторские материалы по теме программирования на скриптовом языке гипертекстового препроцессора РНР. Кроме того - есть система вопросов и ответов, обмен ссылками и баннерами, раздел Ваши письма и многое другое.
Форум сайта
Архив рассылки

заказать книги по РНР  
(только Беларусь)

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

  Долго, очень долго приходится искать в сети достаточно хороший чат. Вы можете поспорить с таким утверждением, и в чем-то конечно окажетесь правы, так как чатами Интернет буквально переполнен. И найти себе по вкусу место общения можно легко и быстро. Но! Если Вы захотите завести такое место у себя на собственном сайте, Вам придется согласиться со мной – нелегко найти в сети достаточно хороший чат. 

  После того, как свет увидела статья «Технологии чата», мне пришло немало писем. Очень во многих – просьба более подробно остановиться на некоторых моментах, которые не попали в статью. Например, часто встречается вопрос об возможности функционирования персональных комнат (так называемый приват) в чате. Этим вопросом мы сейчас и займемся...

 Вступление в тему

  Для начала, давайте сформулируем задачи и цели, а так же обговорим необходимые условия для их достижения. Нам надо на базе готового чата создать максимально защищенное пространство для переписки между двумя индивидуумами. Как непременное условие – уже готовый чат с возможностью регистрации и парольного входа. То есть -  ники в чате должны быть закреплены персонально, иначе теряется смысл привата. Еще нам понадобится знание того языка программирования, на котором сделан Ваш чат. Если Вы смогли сделать его сами, это будет большим плюсом (тут имеет смысл отослать Вас к статье «Технологии чата»). Если Вы воспользовались чем-то бесплатным из Интернета, придется для начала полностью разобраться с работой чужой программы. Чаще всего это сложнее, чем написать свою собственную. Сам язык программирования практически не играет никакой роли, так как я буду рассматривать только теоретические аспекты проблемы. А переложить все это на код будет уже не трудно. Для примеров я буду использовать язык РНР, как наиболее простой и доступный. Не настаиваю на законченности и достоверности моих суждений – все описанное тут есть мои собственные изыскания по теме, и я допускаю что существуют другие способы и алгоритмы реализации приватов в чате. Так же не берусь утверждать, что предлагаемое решение является идеальным. Помните, что все, что сделано одним человеком, может быть исследовано и переделано (взломано) другим :-)

 Первые мысли

  Но, так или иначе со вступлением покончено, и мы можем перейти к делу. Первое, что приходит на ум для решения поставленной задачи – это сделать с десяток простых чатов и использовать их под приваты, разрешив вход по паролю. Это самый простой, но и самый неверный путь. Если у Вас всего несколько посетителей одновременно в чате, то такой подход еще может быть оправдан, но если все Ваши приваты вдруг окажутся занятыми, а кто-то захочет еще… И увеличение количества готовых чатов не выход, так как всегда есть способ лучше. На самом деле, все гораздо элегантней. Незачем плодить чаты, достаточно сделать один, но работать он будет не с фиксированным файлом (куда пишутся сообщения, вводимые в чат), как происходит при работе обычного чата, а с динамическим. Точнее, файлы будут создаваться по мере надобности и таким образом снимается лимит на количество одновременно функционирующих приватов.

  В первую очередь нужно подумать о том, что именно будет служить именем для файла сообщений в привате. Неплохой вариант – комбинация ника и пароля. Только не прямая, конечно, комбинация, а как-либо зашифрованная. Еще вариант – генерация уникального имени в каталоге. Такую возможность предоставляют многие языки программирования (например, РНР конечно). Если нет такой возможности – можно генерировать случайное число и использовать его для имени файла. Только… Эти способы не дают абсолютной гарантии уникальности. А имя файла для привата должно быть обязательно уникальным.

  Ну конечно, у меня есть для Вас готовое решение :-) Способ генерации уникального имени до безобразия прост. Нужно использовать функцию времени, прошедшего с начала эпохи 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


Вопросы и ответы
задать вопрос

Предлагаю Вам задать вопросы на форуме сайта рассылки. Вопрос должен быть кратким, точным и по теме. Ответы на вопросы по мере знаний будут даваться мной, а если я не смогу дать Вам исчерпывающий ответ - кто-то из подписчиков обязательно поможет. А если Вы знаете ответ на заданный вопрос - не поленитесь ответить. Этим Вы очень поможете кому-то решить свою проблему. Синтаксис и грамматика - авторские.

задать вопрос


Обмен ссылками и баннерами

Предлагаю Вам стать участниками баннерообмена. Ваши ссылки и описания Ваших сайтов вы можете присылать по адресу рассылки - virtualphp@tut.by Все ссылки обязательно появятся в этой рассылке. Вам надо будет разместить у себя код баннера сайта рассылки, и только на главной страничке Вашего сайта.

Взять код моего баннера можно этот:  

<a href="http://virtual.bresttelecom.by/php/"><IMG SRC="http://virtual.bresttelecom.by/baner/8831.phtml"
alt="Виртуальный Брест" width="88" height="31" border="0"></a>

... для начала. Позже я вышлю Вам другой.

Наши друзья

http://virtual.bresttelecom.by - Виртуальный Брест. Региональный информационно - развлекательный портал города Бреста. Чат, форум, статьи, услуги, объявления, недвижимость, каталог сайтов - это и многое другое ждет Вас на страницах сайта.
http://price.bresttelecom.by - сайт прайсов фирм города Бреста. Поиск, подсчет, реклама и т.д.
http://tweak.tut.by - http://tweak.bresttelecom.by - Оптимизация и настройка компьютера. Если Вас интересуют различные аспекты настройки Вашего мегагерцевого друга, Вам надо посетить сайт посвященный настройке и оптимизации. Кроме того - список последних версий популярных программ и свежие новости, а так же чат, форум и многое другое!
WebCraft - всё для вебмастеров, увеличение вашего трафика на 200 посетителей в день.
http://sos.dax.ru - Проект "SOS:Помощь пользователю". На сайте вы найдете множество статей, советов по компьютеру. Всегда свежий софт. А также вы сможете задать вопрос и получить на него моментальный ответ. Если вам нужна помощь - мы поможем вам!
http://www.uvd.tula.ru - сайт криминальной милиции УВД Тульской области. Здесь будет все, что Webhowto.Ru - много полезной информации для людей, занимающихся сайтостроением. Информация по настройке собственного веб-сервера на базе Apache, использовании .htaccess для работы с сервером хостинга, масса полезной информации по вебстроительству и отдельный большой раздел, посвященный реестру Windows. Оказывается, Windows тоже настраивается!
http://kamony.h1.ru  Информационный портал Kamony Здесь есть все! Программы, приколы, полезности, музыка, развлечекасается милиции, права и жизни города Тулы.
http://myvote.hut.ru - MyVote - голосование на Вашем сайте.Сервис для всех вебмастеров, которые хотят сделать свой сайт более интерактивным. Позволяет организовать опрос мненияпользователей на любом сервере.
http://www.sura.ru/maxwell Математика, Алгоритмы, Программирование. На сайте можно найти описания различных алгоритмов и методов, относящихся к различным математическим (и не только) дисциплинам.
http://babylon1.narod.ru - это разделы посвящённые созданию и раскрутке сайта, созданию эффективного баннера, интересным эффектам на java-скриптах, php-скриптах и cgi-скриптах. А также здесь Вы найдёте программы для ускорения интернета, памяти, компьютера, системы, Windows и многое другое интересное и полезное, что Вас, надеюсь, заинтересует.
http://moorhuhn.bip.ru/  - Сайт рассказывает о лучших бесплатных играх интернета - Moorhuhn, Vampirejagd, Tux Racer, Catch the Sperm, а также есть коллекция онлайн игр и обоев.
ния, мировые новости, компьютерная безопасность, скрытые возможности программ и ОС, раскрутка сайтов и многое многое другое!


Сайты в тему

Предлагаю Вам коллекцию сайтов, где Вы сможете отыскать различную информацию по поводу РНР. Если у Вас есть предложения по поводу расширения этого списка - я с удовольствием добавлю сюда еще один полезный ресурс. Присылайте свои ссылки и описания.

  • http://www.php.net/ - официальный сайт РНР. Масса информации, но только для тех, кто дружит с английским.
  • http://www.php-encoder.f2s.com - защита РНР скриптов UPDATED.
  • http://phpclub.net - Архив бесплатных PHP-приложений (вкл. E-commerce), форумы, чаты, рассылки, книги, обучение, хостинг.
  • http://www.devshed.com/Server_Side/PHP/ интересные статьи по PHP и не только.
  • http://ancient.dax.ru На сайте много готовых решений на PHP: форумы, чаты, гостевые книги и многое другое. Кроме того сам сайт реализован на php.
  • http://detail.phpclub.net/ - как обычно, о РНР.
  • http://firststeps.narod.ru/html/php/php.html
  • http://detail.phpclub.net/
  • http://phpclub.unet.ru
  • http://open.appideas.com/   сборник скриптов
  • http://programmingpub.com/scripts.html   скрипты на perl,php,python,tcl
  • http://px.sklar.com   php сборник скриптов
  • http://phplib.netuse.de   Здесь можно найти самую матёрую библиотеку на php(не отдельные скрипты, а цельное пособие по разработке), только не спешите подписываться на рассылки (авторы думают что все в мире должны знать немецкий
  • http://php.resourceindex.com/   коллекция скриптов
  • http://phpwizard.net   Tobias Ratschiller ничего не говорит?
  • http://www.umnik.f2s.com/ содержит информацию для вебмастера (по всем актуальным языкам веб-программирования), установка домашнего сервера Apache (разных версий)+MySQL+PHP+Perl. Также можно подписаться на рассылки
    "Вопросы и ответы по ОС" и "Будь достойным вебмастера". Имеются множество советов по компьютеру...
  • www.phpbuilder.com Здесь есть все! Форум, статьи, мануал, скрипты, да и вообще очень много профессионалов, тусующихся на сайте.
  • http://phpclasses.upperdesign.com/ Там находится масса классов на php, имеется рассылка на английском
    языке, регистрация бесплатная.
  • http://www.sourceforge.com - Вот IMHO очень полезный сайт. И не только для PHP-программистов, но и для всех остальных. Там десятки тысяч готовых примеров.

Где можно посмотреть

А и правда. РНР, да РНР! А где посмотреть как все это работает и оценить, стоит или нет заниматься этим... Правильное решение будет таким. Посетите сайты, указанные ниже, и посмотрите как они работают. Кстати, если хотите продемонстрировать всем свой проект или то, чего Вы достигли изучая РНР, присылайте ссылку и описание, и все это будет размещено здесь. Только не забудьте поставить у себя наш баннер, и обязательно на главной страничке.

http://virtual.bresttelecom.by - Виртуальный Брест. На РНР работают чат, форум, гостевая, объявления, статистика посещений, обмен компакт дисков, анекдоты.
http://www.uvd.tula.ru - сайт УВД Тульской области.
http://www.andrey.nnov.ru "Сайт Андрея Зайчикова" - Поможет начинающим программистам стать профессионалами. Алгоритмы, статьи, книги, faq и многое другое.
www.puhlik.f2s.com - Система позволяет провести опрос (голосование) любой целевой аудитории (посетители сайта, участники форума и т.д.). Полностью написана на PHP4 с использование MySQL.
http://anek.hut.ru - WWW Каталог. Весь сайт написан на PHP + MySQL


Подпишитесь на рассылки!

Рассылки Subscribe.Ru
Программируем на PHP - вопросы и ответы
Новости сайта Виртуальный Брест
Оптимизация и настройка компьютера
SOS:Помощь пользователю Интернета
Вэб-строительство Профессионалам
Кроссворды от К.Ермакова
JavaScript и PHP
BigMoney$
Dummpy Daily eTips
Аббревиатуры и термины в компьютерном мире
Тяжелая музыка от А до Я

Здесь будет публиковаться список рассылок, рекомендуемых к подписке. Если у Вас есть рассылка - предлагаю Вам обменяться подобной формочкой для подписчиков. Достаточно прислать мне код рассылки и ее название.


автор рассылки Андрей Кухарчик / http://virtual.bresttelecom.by/php



http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное