ityouth.ru Среда, 2012-02-08, 5:32 AM
Привет Посетитель | RSS | Feedburner
Главная | Каталог статей | Регистрация | Вход
» Меню сайта

» Категории раздела
SYS | Программирование [2]
Web | Программирование [4]
XP | Vista | Server [8]
Linux | Unix | FreeBSD [2]
Веб мастер | БД [19]
Internet | LAN | Протоколы [14]
Хакинг | Защита [19]
Службы | Сервисы [4]
SEO | Продвижение [14]
Hardware | News [5]
Невероятно | Факты [3]
Другое | ETC [2]

» Теги
APU Acer Lenovo MSI ViewSonic безопасность планшет продвижение сайта windows xp nokia microsoft laptop HTC Canon Toshiba хакинг Android 2.3 Драйверы Galaxy DVD ультрабук Radeon HD 7900 антивирус ноутбук Android USB 3.0 вебмастеру nod32 браузер OLED SEO apple CES 2012 Android 4.0 NVIDIA HP windows asus Office Мультимедиа Thermaltake google оптимизация windows GIGABYTE Dell LTE SSD Sony his конвертер смартфон Panasonic защита eset LG Samsung корпус взлом Intel AMD

» Архив новостей
2005 год 2006 год 2007 год 2008 год 2009 год

» Категории файлов
Antivirus and Spyware [22]
Антивирусы и Антитрояны
Firewalls and Security [6]
Фаерволы и Защита
Cleaning and Tweaking [13]
Реестр и Чистка
Compression and Restore [7]
Архивация и Восстановление
File Transfer and P2P [4]
Передача фалов и Пиринг
CD and DVD Tools [8]
Работа с CD и DVD
Messaging and Chat [12]
Мессенжеры и Чаты
Browsers and Plugins [12]
Браузеры и Плагины
Desktop and Interface [3]
Рабочий стол и Интерфейс
Programming and Tools [4]
Программирование и Плагины
Hack and Frick [14]
Хакинг и Фрикинг
Audio and Video [25]
Аудио и Видео
Drivers [4]
Драйверы
Webmaster and Designer [27]
Вебмастер и Дизайнер
Bisness and Books [14]
Бизнес и Книги
Office and PDF [5]
Офис и PDF
Operation System [9]
Операционные Системы
Utilities and Other [19]
Утилиты и Прочее

» Категории статей
SYS | Программирование [2]
Web | Программирование [4]
XP | Vista | Server [8]
Linux | Unix | FreeBSD [2]
Веб мастер | БД [19]
Internet | LAN | Протоколы [14]
Хакинг | Защита [19]
Службы | Сервисы [4]
SEO | Продвижение [14]
Hardware | News [5]
Невероятно | Факты [3]
Другое | ETC [2]

» Фото

» --

Главная » Статьи » Веб мастер | БД

Пишем чат на PHP

Здравствуйте, уважаемые web-мастера! Я уверен, что вы хотите, чтобы ваш сайт активно посещался, чтобы посетителям был интересен материал, размещенный на вашем сайте, чтобы они возвращались вновь и вновь. Скорее всего, у вас на сайте уже работает форум и гостевая книга. Но чего-то все же не хватает… Чего? Чата! Чата, в котором можно было бы пообщаться, из-за которого посетители будут возвращаться вновь и вновь…

Что для этого нужно?

Так в чем же дело?! Давайте напишем свой собственный чат, который будет отвечать всем вашим требованиям, будет быстрым и компактным.

Теперь давайте определимся, что должен уметь наш чат.

Во-первых, он должен регистрировать новых посетителей и обеспечивать вход уже зарегистрированным.

Во-вторых, он должен уметь вставлять смайлики – эти веселые маленькие картинки, без которых сегодня не обходится большинство чатов.

В-третьих, пользователи должны иметь возможность общаться в привате, т.е. лично друг с другом, чтобы остальные посетители не видели их разговора (естественно, кроме администратора :))

Теперь определимся, какие технологии мы будем использовать при разработке чата. Писать будем на PHP, а для регистрации пользователей информацию о них будем хранить в базе данных MySQL. Сам же текст болталки (болталкой назовем информацию, которой обмениваются посетители) будет находиться в текстовом файле.

Для начала напишем простенький чат, без привата и администраторских функций, в котором посетители могут регистрироваться, общаться друг с другом, вставлять смайлики.

Выглядеть он будет примерно так.

Теперь я уточню еще несколько деталей, которые необходимо обсудить еще до написания кода.

В текстовом файле chat.txt (в нем будет храниться наша «болталка») должно находиться не более 20 последних сообщений (для уменьшения трафика и ускорения загрузки чата).

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

Кроме того, если вы планируете создать небольшой чат, к примеру, для общения с друзьями, то было бы неплохо записывать все, что произносилось в чате, в отдельный файл (назовем его history.txt). В дальнейшем можно будет произвести некоторые действия над этим файлом (к примеру, каждый день в 12.00 отсылать содержимое этого файла вам на e-mail, а после этого очищать его). Но это будем делать после того, как наш чат уже будет работать.

Какие файлы нужны для создания чата?

Теперь определимся, какие файлы нужно создать для работы чата. Ниже приведен полный список файлов чата с описанием, для чего нужен тот или иной файл.

index.php – главная страница чата. Выводит на экран форму для ввода логина и пароля, а также информацию, скоько сейчас человек в чате (и возможно, последние 20 реплик)

chat.php – ну, а это наш самый главный и важный файл. Что он только не делает: проверяет посетителей на верность пары логин-пароль, регистрирует посетителе, а кроме того, подключает к себе довольно большое количество описанных ниже РНР-файлов.

chat.inc.php – это РНР-файл содержит в себе HTML-документ с фреймами, без которых не обходится не один уважающий себя чат ?, а также небольшой кусок РНР-кода.

send.php – этот файл выводит на экран форму с текстовыми полями для ввода реплик, вставки смайликов и прочих полезных ? вещей, а также поле для выбора собеседника (либо для обения в «болталке», либо для общения в «привате»).

smiles.php – тут и так все понятно. Этот файл будет в цикле выводить смайлики на экран и генерировать JavaScript-код для вставки кода смайлика в строку реплики чатника.

add.php – этот файл будет оформлять реплики чатников и вставлять их в файл chat.txt.

del.php – при выходе чатника из чата удаляет чатника из списка активных (т.е. в данный момент обсуждающих свои важные ? проблемы и находящихся в чате).

includer.php – содержит в себе 3 переменных: $myserver, $mylogin, $mypassword. Переменная $myserver указывает сервер, на котором находится БД (обычно это - localhost), $mylogin и $mypassword – логин и пароль для подключения к БД.

text.php – РНР-файл, отвечающий за обновление информации в «болталке».

users.php – РНР-файл, который выводит на экран список находящихся в данный момент в чате посетителей, а также генерирует JavaScript-код для вставки ника выбранного чатника в окошко ввода реплики.

logo.html – файл, выводящий логотип чата на экран.

chat.txt – а это «болталка» чата, в ней хранятся последние 20 реплик.

history.txt – его назначение уже было описано выше.

chat_users.sql – SQL-файл, содержащий структуру таблицы chat_users.

logo_chat.jpg – логотип чата.

style.css – таблица стилей, используемая в чате.

1…7.gif – 7 рисунков-смайликов, используемых в чате.

А теперь нужно упомянуть один момент, без объяснения которого никак нельзя обойтись.

Что еще?

Как обычно люди уходят из чата? Правильно, редко кто нажимает на кнопку выход, обычно просто закрывают окно с чатом. Нам нужно отслеживать эти моменты, чтобы вовремя убрать ушедших чатников из списка находящихся в чате. А, допустим, у человека что-то случилось и он обновляет страницу. Вплне реальная ситуация. Так вот, в обоих этих случаях происходит событие Unload. Его можно отследить при помощи JavaScript-обработчика onUnload. Это событие происходит в текущем окне непосредственно перед выгрузкой документа. Так вот, при каждом из вышеупомянутых действий посетителя надо должным образом отреагировать: если чатник выходит из чата, то удаляем его из списка активных посетителей, а если просто обновляет - то ничего не делаем. Но у нас же на разные действия реагирует один и тот же обработчик! Как же решить эту проблему? Об этом я подробнее расскажу при описании работы файлов chat.inc.php, send.php и del.php.

Если Вы хотите посмотреть, как работает описанный в статье чат, можете зайти на http://chat.micro.org.ua и убедиться, что все описанное в этой статье работает :).

Начинаем работу

Ну, а теперь, когда вроде бы все вопросы выяснены, можно приступать к непосредственному набору кода. начала я буду писать полный код файла, а потом буду подробно описывать, что он делает. А перед набором кода создайте пустые файлы chat.txt и history.txt.

Кроме того, в тот же каталог, в котором у вас находится чат, положите 7 gif-файлов – это наши смайлики. Я думаю, что вы сможете найти 7 смайликов в Интернете ?, но все же если у вас нет смайликов, можете взять их с http://chat.micro.org.ua.

Теперь создайте таблицу стилей style.css, она понадобится нам в дальнейшем для оформления чата, хотя если вы не хотите использовать CSS, можете не создавать ее. Если вы все же решили использовать CSS, создайте два класса: normal и title, они нам еще пригодятся :).

Теперь нам нужен логотип чата. У меня логотипом является слово «MICRO»,написанное на синем фоне золотыми буквами высотой 55 и шириной 195 пикселей. Этот момент оставляю на Ваше усмотрение.

Ну, а теперь – открывайте свой любимый РНР-редактор (надеюсь, что это не блокнот ?) и начинайте… Я начну со второстепенных по своей важности файлов. Чтобы потом не отвлекаться на их описание во время объяснения работы основных файлов.

Chat_users.sql

Для начала нужно создать таблицу «chat_users» в базе данных. Итак, вот ее код:

Мы создали таблицу, в которой находится пять столбцов:

1. id – идентификатор чатника
2. login – логин (ник) чатника
3. password – пароль чатника
4. privat – это задел на будущее, когда мы будем работать над «приватом»
5. active – тут будет храниться лишь одна цифра: 1 – если чатник в данный момент находится в чате, и 0, если чатник в данный момент не в чате.
Тут нет ничего сложного.

Incuder.php

Это – ваши данные для подключения к базе данных.

Logo.html

Тут и пояснять особо нечего. Мы создаем HTML-документ, вставляем в него изображение-логотип чата и прижимаем его к Раям страницы при помощи строки «TOPMARGIN=0 LEFTMARGIN=0 RIGHTMARGIN=0 MARGINHEIGHT=0 MARGINWIDTH=0».

Ну, а теперь приступим к основным файлам чата.

Index.php

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

Chat.php

Что мы делаем в этом файле? Первым делом выставляем подавление ошибок (error_reporting(0)) – чтобы ни случилось, посетители не должны видеть сообщенияоб ошибках. Далее подключаем файл includer.php с данными для подключения к базе данных. Выбираем из массива POST значения логина и пароля и, если они не пусты (хоть мы уже и предусмотрели такой вариант в файле index.php, но вдруг кто-нибудь наберет сразу http://chat.***.com/chat.php, то в этом случае мы перебрасываем его на index.php), продолжаем работу сценария. Потом проверяем, есть ли у нас в таблице chat_users пользователь с таким логином. Если нет (ник не занят), то заносим логин и пароль в таблицу – таким образом проходит регистрация. Если же такой логин уж есть в таблице, то проверяем, совпадает ли пароль, введенный посетителем, с паролем, находящимся в таблице. Если нет, то создаем JavaScript-код, содержащий сообщение о том, что пароль неверен, и перебрасываем его на страницу index.php. Если же все нормально (соответствующая пара «логин-пароль» найдена в таблице, то выдаем посетителю файл chat.inc.php). Кроме тго, производим некоторые манипуляции ? над таблицей: заносим в поле «active» этого посетителя число 1, т.е. делаем его активным.

Chat.inc.php

В этом файле содержится набор фреймов, в которых содержатся РНР-файлы. Когда срабатывает событие onUnload, обработка событий передается файлу del.php. Подробнее о работе этого файла – в конце статьи. Обратите внимание – в каждый из документов, находящихся во фреймах (исключение – logo.html и smiles.html), мы передаем с помощью строки запроса логин посетителя. Зачем это нужно? Об этом я расскажу позднее.

Text.php

На этот документе стоит обратить особое внимание.
При помощи строки <META CONTENT="5; URL=text.php" HTTP-EQUIV=Refresh> мы выставляем частоту обновления файла – пять секунд. По моим наблюдениям, 5 секунд для нашего чата – оптимальное частота обновления, ведь файл, который будет каждый раз считываться, состоит всего лишь из 20 строк, поэтому чем быстрее обновляется text.php, тем для нас лучше.
Естественно, выставляем подавление сообщений об ошибках.
Далее при помощи функции file() мы считываем информацию из файла chat.txt и выводим информацию на экран, предварительно заменяя символы «n» (перенос строки) на «<BR>».<br>

Обратите внимание на строки:

С помощью этого кода мы оставляем в «болталке» лишь последние 20 строк. Эта проверка выполняется после того, как количество строк в файле chat.txt превысит 20.

И еще один немаловажный момент. Наш документ должен прокручиваться вниз, чтобы чатники видели самые последние реплики. Этого мы достигаем, применяя в тэге <BODY> обработчик события Load: <BODY ONLOAD="scroll(0,100)">

Smiles.html

При помощи JavaScript мы вставляем в строку реплики, находящуюся в файле send.php, код смайлика (например, для пятого смайлика, имеющего имя 5.gif, код юудет таким: <5>). Позже, в файле add.php, мы вместо кода <5> вставим <IMG SRC="5.gif">, и у чатников на экран выведется нормальный смайлик.

Send.php

В этом файле находятся две формы. Первая из них содержит два текстовых поля (одно для ввода имени собеседника, другое – для ввода реплики) и кнопку «Сказать», которая передает данные этой формы в файл add.php. Вторая включает в себя лишь одну кнопку «Выход», нажатие на которую активизирует файл del.php и выводит посетителя из чата. Конечно, вряд ли кто-то воспольуется этой кнопкой, но все же… Кроме того, обе формы передают в файлы-обработчики логин чатника.

Users.php

При помощи этого файла мы выводим на экран список активных посетителей (т.е. тех, у которых в данный момент в поле «active» стоит значение 1). Этот файл обновляется каждые 10 секунд.
Кроме того, мы выводим в этом файле список сайтов, которые рекомендуем посетить чатникам (авось, кто-то из них и кликнет по ссылке, которая, кстати, откроется в новом окне), а также правила чата. Я не стал слишком перегружать посетителей правилами: не ругаться, не флудить, слушаться Admin’а. Кстати, об Admin’e – в следующей статье я расскажу вам, что это за Admin, и что мы будем с его помощью делать.

Add.php

Получив из файла send.php сообщение, мы должным образом форматируем его: выделяем e-mail’ы, адреса сайтов, с помощью символов «=>» разделяем, кто к кому обращается и выделяем обращение жирным шрифтом. Потом открываем файл chat.txt и добавляем в его конец новую строку, содержащую только что отформатированную реплику. После этого возвращаем посетителя обратно к send.php.

Del.php

Наконец мы подошли к самому интересному месту работы чата. Как я уже упоминал в начале статьи, перед нами возникает проблема. Если человек просто обновляет окно чата, то мы с ним ничего не делаем, а если закрывает окно чата, то удаляем его из списка активных посетителей. Как этого добиться? Смотрите, как работает файл del.php.

На самом деле при любом изменении документа мы выставляем чатнику в «active» значение 0. Но если чатник уходит, то это значение 0 так и останется в его профиле, а если чатник просто обновляет страницу, то сценарий del.php сначала заносит в профиль чатника значение 0, а потом, после обновления, сценарий chat.php заносит в профиль этого чатника значение 1. Т.е. по сути для чатника ничего не меняется – он вышел, и его логин убирается из списка активных посетителей, обновил страницу – и все нормально, работает так, как и должно было работать.

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

Ну, а в следующей статье мы расширим возможности нашего чата: создадим для чатников возможность пообщаться в «привате», интерфейс администрирования чата, а также сценарий Admin’a, который будет реагировать на все происходящее в чате, который будет что-нибудь объявлять и, возможно, сможет отвечать на простые вопросы.

На этот раз все. Если у Вас будут какие-то вопросы – пишите, постараюсь вам ответить. Удачи!





Похожие материалы:


Материал входит в категории: Веб мастер | БД



Источник: http://www.webmastak.com
Категория: Веб мастер | БД | Добавил: Дофин (2007-09-12) | Автор: Илья Барков
Просмотров: 8538 | Теги: чат, php, программирование | Рейтинг: 2.0/3
Всего комментариев: 2
0  
2 ДиммКа   (2010-07-17 6:31 PM)
прошло время когда каждый юзер сам писал код.... этот скрипт (кстати не работающий (поправка НЕ правильно работающий)) лежит на 102 сайтах! а ведь тот кто его когда то написал обещал продолжение, но не дождавшись продолжения голодные админы ринулись и скопировали этот скрипт себе на сайт! Нуже же все таки сайту """"уникальный""" контент! cry

0  
1 лейла   (2008-12-13 8:46 AM)
cry

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
» Форма входа
Логин:
Пароль:

» Поиск


» Игры

» Окажи помощь

» Реклама

» Почта
Логин:
@ityouth.ru
Пароль:
Не удается войти в аккаунт?

» Подписаться на новости
Подписаться через RSS2Email

ИТ новости и ПО




» Всего материалов
Comments: 2501
Forum: 441/5118
Photo: 118
Blog: 18
News: 1520
Downloads: 193
Publisher: 78
Directory: 13534
Ad-board: 14
Games: 218
FAQ: 15
Guestbook: 140
Tests: 34

» Статьи

» Файлы

» Кнопка сайта

ИТ молодежь


» Статистика

Онлайн всего: 4
Гостей: 4
Пользователей: 0

» Корзина
Ваша корзина пуста



имхо | ссылки | киса

Copyright © 2008 [ ityouth.ru ]

Техническая поддержка: icq [263-504]
Пишите нам: [ Обратная связь ]
Используются технологии uCoz