Меню
Профиль

Упражнение: Персонализация веб-сайта Оглавление Упражнение: Опросник

Чат

Теперь рассмотрим функции работы с параметрами на стороне сервера, на примере двух программ для реализации чата. Функции, которые пишут информацию непосредственно на сервер, используется очень редко. Здесь мы рассматриваем программу чата, как учебный пример, чтобы продемонстрировать функции чтения параметров. Почему это учебный пример и как правильно написать чат см. главу Часть IV "Базы данных". Основное назначение группы этих функций, именно читать информацию из конфигурационного файла на сервере, а также работать с параметрами, которые сохраняются в базе данных.
Чат представляет из себя три html-файла, одну программу, которая показывает последние 20 сообщений и одну программу, которая добавляет сообщения.

Код главной html-страницы чата выглядит следующим образом:

<html>
<head>
<title>Chat</title>
</head>
<frameset rows="90%, 10%">
  <frame src="chat_show.php">
  <frame src="chat_add.php">
</frameset>
</html>
Страница состоит из двух фреймов. 
В верхнем отображаются сообщения. 
В нижнем их можно добавлять.



Показ сообщений - chat_show.php, обновляется каждые 30 секунд.
<html>
<meta http-equiv="refresh" content="30; url=chat_show.php"> 
<body>
<!--#include virtual="/cgi-bin/chat"-->
</body>
</html>

Добавление сообщения - chat_add.php
<html>
<body>
<form method=post action=/cgi-bin/chat_add>
Имя:<input type=text name=name maxlenght=10 size=10> 
Сообщение:<input type=text name=msg maxlenght=80 size=50>
<input type=submit>
</form>
</body>
</html>
Чат устроен предельно просто. На сервере имеется 20 параметров с именами 0, 1, 2, 3 и т.д. Значение каждого параметра есть некоторое сообщение чата. Когда добавляется новое сообщение, то 20-е сообщение исчезает, его место занимает 19-е, на место 19-го становится 18-е и т.д., на место нулевого - новое сообщение. Программа для вывода текущих сообщений выглядит следующим образом.
#include <itcgi.h>


int main()
{
LString* str = CreateString();
char buf[128];
int i;

printf("Content-type: text/html\n\n");  

// в цикле читаем параметры на стороне сервера
for(i=0;i<20;i++)
{
 sprintf(buf, "%d", i); 
 //следующая функция читает из конфигурационного файла
 // из секции chat i-й параметр 
 GetRCParam(0, "chat", buf, str);
 printf("%s<br>\n", *str);
}


DeleteString(str);
return 0;
}

=======Makefile======

all: chat 


chat: chat.c itcgi.a
        gcc chat.c -L/usr/local/lib/mysql -I/usr/local/include/mysql \
-L/usr/local/lib -I/usr/local/include \
-o chat -lmysqlclient /usr/lib/itcgi.a -Wall -O3 
        strip chat 
        cp chat /www/members/cgi-bin/chat




//программа добавления сообщения в чат
//
//
#include <itcgi.h>




int main()
{
LString* name = CreateString(); 
LString* msg = CreateString();
LString* str = CreateString();
char buf[128];
int i;

// Считываем имя автора и само сообщение
GetParamByName("name", name);
GetParamByName("msg", msg);

// в цикле переписываем значения параметров
// i-й параметр принимает значение (i-1)-го параметра
//
for(i=20;i>1;i--)
{
 sprintf(buf, "%d", i-2);       
 GetRCParam(0, "chat", buf, str);
 sprintf(buf, "%d", i-1);       
 SetRCParam(0, "chat", buf, *str);
}

// на место 0-го параметра ставим только что полученное сообщение
sprintf(buf, "%s: %s", *name, *msg);
SetRCParam(0, "chat", "0", buf);

// возвращаемся на страницу, с которой была вызвана
// эта программа
printf("Location: %s\n\n", getenv("HTTP_REFERER"));

DeleteString(name);
DeleteString(msg);
DeleteString(str);
return 0;
}

======Makefile======

all: chat_add 


chat_add: chat_add.c itcgi.a
        gcc chat_add.c -L/usr/local/lib/mysql -I/usr/local/include/mysql \
        -L/usr/local/lib -I/usr/local/include \
-o chat_add -lmysqlclient /usr/lib/itcgi.a -Wall -O3 
        strip chat_add
        cp chat_add /www/members/cgi-bin/chat_add

Меню
Профиль

Навигация
- Главная
- Фото галерея
- Справочник HTML
- Учебник PHP
- Мультики, музыка скачать
- Раскрутка и оптимизация
- Проекты
- Поиск по сайту
- Разное
- с for cgi
- Сервис поиска ссылок
Сейчас на сайте
- Гостей: 3

- Пользователей: 0

- Всего пользователей: 540
- Новый пользователь: ARG
Темы форума
Новые темы
- MySQL server has gon...
- Как устроен php-fusion?
- Бюджетное поисковое ...
- ЧПУ и PHP-Fusion
- модуль расширенного ...
Обсуждаемые темы
- пару вопросов [97]
- PHP-Fusion 7 [65]
- Help [41]
- Отсылка ICQ сообщ... [34]
- Баги, глюки [30]
Последние статьи
- SELECT - полное опис...
- Хранение файлов в ба...
- Комплект разработчик...
- Ajax - об этом долже...
- Определение наличия ...
Информеры
Ссылки  +  -
Случайные фото


Шаблоны сайтов сборник03


Шаблоны сайтов сборник09


Шаблоны сайтов сборник01
Авторизация
Логин

Пароль



Забыли пароль?
Запросите новый здесь.
Отослать ICQ

UIN получателя:


f7cd9
Код подтверждения:



Help
Мини-чат
Вы должны авторизироваться, чтобы добавить сообщение.

21/02/2012
Упирается, но сдулся Smile

19/02/2012
Как дела с php-fusion? Сдулся или еще упирается?

01/01/2012
Ну вот и наступил 2012-й. Всем искренне желаю новых успехов, здоровья и благополучия! Пусть новый год счастливым станет!

27/12/2011
Взаимно. Спасибо!

27/12/2011
С Наступающим!!! Smile

15/12/2011
Разделяю Ваши предпочтения. Pimped вещь стоящая.

15/11/2011
Да кому он нужен? Уже и 7.02.04 вышел, но нет желания с ним возиться - толкут воду в ступе. Уж лучше pimped буду развивать.

28/09/2011
На официальных сайтах, которых развелось как грибов после дождя


25/08/2011
Привет всем. Давно здесь не был. Где 7.02.03?

02/08/2011
Нет, то что "хотя" тоже не годится.

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