Разработка приложений клиент-сервер для сетей TCP/IP с использованием CGI-интерфейса

 















Пояснительная записка к курсовому проекту по теме:

«Разработка приложений клиент-сервер для сетей TCP/IP с использованием CGI-интерфейса»


Введение


Компьютерные сети - это средство для удобного обмена информацией между пользователями, так же они реализуют обработку данных, которая распределена между двумя объектами: клиентом и сервером. В связи с этим специалист в области компьютерных сетей обязан обладать знанием технологий клиент-сервер, обеспечивающих взаимодействие между пользователями сети, а также знанием языка гипертекстовой разметки документов, необходимого для создания собственных Web-страниц. Одним из наиболее мощных и популярных инструментов, позволяющих реализовать данную технологию, является CGI-интерфейс. CGI - Common Gateway Interface является стандартом интерфейса (связи) внешней прикладной программы с информационным сервером типа HTTP, Web-сервер. Он обозначает набор соглашений, которые должны соблюдаться Web-серверами, при выполнении ими различных Web-приложений.

Поэтому цель данного курсового проекта разработка приложения архитектуры клиент-сервер, для сетей TCP/IP с использованием CGI-интерфейса, языка разметки гипертекстовых документов HTML и языка PHP.

В качестве языков программирования для реализации цели проекта выбраны языки HTML и PHP. Данный выбор обусловлен массовым применением языка HTML и CGI-интерфейса для создания веб-страниц в сети Internet и широким использованием языка сценариев общего назначения PHP с открытым исходным кодом.- это скрипт-язык (scripting language), встраиваемый в HTML, который интерпретируется и выполняется на сервере. В PHP включена поддержка многих баз данных. MySQL - компактный многопоточный сервер баз данных. MySQL характеризуется большой скоростью, устойчивостью и легкостью в использовании.

Актуальность данной темы обусловлена:

-бурным развитием Internet-технологий и широким внедрением их в производство;

-широким распространением сетей на базе протоколов TCP/IP.



1. Постановка задачи


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

Программа администрирования раздела событий должна состоять из двух частей: клиентской и серверной.

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

Клиентская часть программы представляет собой набор интерфейсных HTML-страниц предназначенных для:

-просмотра событий за заданный интервал времени;

-редактирования, удаления и добавления событий в базу данных;

-аутентификация пользователя ежедневника;

-изменение пароля пользователя ежедневника.

Серверная часть представляет собой CGI-приложение, предназначенное для формирования клиентских HTML-страниц на основе информации из базы данных событий, и внесения изменений в базу данных, в соответствии с информацией, полученной от клиентской части.

Запись в базе данных в обязательном порядке должна содержать следующие поля:

-дата события;

-заголовок события;

-описание события.

Также была отмечена необходимость задания параметров соединения с базой данных и её выбора для удобства установки приложения. Соответствующие РНР-сценарии должны создавать необходимые таблицы, считывать необходимые данные из строк таблицы (которые соответствуют каким-либо событиям) в базе данных, а также удалять строки и редактировать соответственно. Для чего должны быть реализованы функции создания, удаления, редактирования и считывания строк из базы данных, для создания, удаления, редактирования и просмотра соответствующих этим строкам событий.


2. Функциональное назначение разрабатываемого ПО


Разрабатываемое программное обеспечение предназначено для выполнения следующих функций:

-просмотр ежедневника пользователя, содержащего сведения о событиях;

-его редактирование (добавление, изменение, удаление отдельных записей);

-администрирование базы данных.

Главным назначением разрабатываемого программного обеспечения является удобный способ ведения учета важных событий. Поэтому данное программное обеспечение должно быть удобным для пользователя в смысле наглядности, компактности, гибкости и скорости доступа к информации.


3. Разработка и описание интерфейса


.1 Интерфейс клиентской части


Интерфейс пользователя является важной составляющей успешного проекта. Пользователь осуществляет управление работой приложения путём заполнения HTML-форм.

Главная страница, с которой пользователь начинает свою работу, содержит заголовок и два поля для ввода имени пользователя и пароля, а так же кнопку «Вход».

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

Напротив каждого события в поле «Удаления» существует возможность установить метку и при нажатии кнопки «Удалить» из таблицы будет удалена определенная запись.

Для редактирования какой-либо записи необходимо активизировать гиперссылку ее заголовка, в результате чего появится форма для изменения значений полей, эта же форма предназначена для создания новой записи в случае активизации гиперссылки «Добавить запись». Вид ее приведен на рисунке 3.

Для изменения существующего пароля необходимо щелкнуть гиперссылку «Сменить пароль», что повлечет за собой появления на экране формы, в которой предусмотрено поле для ввода нового пароля и кнопка «Сменить». После установления нового пароля осуществляется возврат на первую страничку регистрации.

Исходный код РНР главной страницы, формы для входа на сайт, формы для добавления записи, формы для изменения пароля в файлах «index.php», «login.php», «addrecord.php», «password.php» приведён в приложении А.


3.2 Интерфейс серверной части

программный интерфейс алгоритм серверный

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

После выбора действия происходит передача параметров из клиентской в серверную часть посредствам гиперссылок. После чего серверная часть анализирует полученные параметры и выполняет необходимые операции. При активизации ссылки «Добавить запись» формируется страничка с формами подлежащая заполнению. Результат заполнения анализируется одним из файлов серверной части «addrecord.php». В зависимости от результата анализа осуществляется либо добавление записи в базу данных, либо выдача сообщения о некорректном заполнении форм. При активизации других ссылок обработка данных в серверной части производится другими файлами по аналогичному алгоритму.


4. Описание алгоритма и программной реализации приложения


Алгоритм работы приложения начинается с проверки соответствия пароля и имени пользователя. В случае нахождения такого соответствия производиться доступ пользователя к ежедневнику. То есть осуществляется поочередный вывод строк Ak таблицы, где k - это порядковый номер строки, содержащей сведения о событии A. Вывод осуществляется в цикле, для реализации которого был инициализирован счетчик переменной k, изначально обнуленной. В данном алгоритме i - общее количество записей в таблице.

Далее следует проверка наличия выбора какого-либо действия. В зависимости от этого выбора осуществляются процедуры следующих действий:

-вывода события или списка событий за определенный интервал времени;

-удаления выбранного события или нескольких событий из базы данных;

-редактирования выбранного события;

-добавления события в базу данных.

Алгоритм работы приложения приведен в приложении А на рисунке А.1.

Каждая из процедур реализована в отдельных алгоритмах.

Вывод списка событий осуществляется в цикле, где проверяется условие того, входит ли дата события TAk в заданный интервал времени T. Если да, то выводится событие Ak и k увеличивается на единицу. Алгоритм процедуры просмотра информации из базы данных приведен в приложении А на рисунке А.2.

Алгоритм удаления событий осуществляется аналогично, разница состоит в том, что проверяется условие, выбрана ли в таблице запись Ak, и если оно верно, то эта запись подлежит удалению. Алгоритм процедуры удаления информации из базы данных приведен в приложении А на рисунке А.3.

Для алгоритма процедуры редактирования выбранного события, так же организован цикл проверки наличия выбранной записи, а затем действия ввода новых значений для полей Ak и их сохранение. Алгоритм процедуры удаления информации из базы данных приведен в приложении А на рисунке А.4.

Алгоритм добавления записи состоит из действий ввода значений полей новой записи и сохранения ее в базе данных. Он приведен в приложении А на рисунке А.5.

В соответствии с представленными алгоритмами была разработана их программная реализация на языках HTML и PHP. Текст программы приведен в приложении Б.



5. Описание схемы базы данных


Для работы приложения было создано две таблицы. Первая содержит строки, каждая из которых соответствует одному событию ежедневника. Для каждого события определены поля: порядковый номер, время и дата заголовок, описание. В таблице 1 приведено соответствие заголовков полей и содержащихся в этих полях данных.


Таблица 1 - Типы полей базы данных событий

iddatetimetitledescriptionuniqueПорядковый номерДата и время записи событияЗаголовок событияОписание событияМетка

Вторая таблица содержит список пользователей, где для каждого из них существуют поля: порядковый номер, имя пользователя и пароль. В таблице 2 приведено соответствие заголовков полей базы данных пользователей и содержащихся в этих полях данных.


Таблица 2 - Типы полей базы данных пользователей

nicknamepasswordidИмя пользователяПарольПорядковый номер

Создание таблиц программно реализовано в файле createDB.php, листинг которого приведен в приложении Б.



Заключение


В ходе выполнения задания на курсовое проектирование было создано программное обеспечение на языке РНР, предназначенное для обслуживания базы данных событий, а именно разработано приложение клиент-сервер, предназначенное для обслуживания базы данных событий, соответствующее всем изложенным в задании требованиям.

В результате выполнения работы освоены навыки создания приложений типа клиент-сервер на языках программирования PHP, HTML с использованием СУБД MySQL.

Задание на курсовое проектирование выполнено в полном объёме.



Список использованных источников


1. Котеров Д.В. Самоучитель PHP4. - СПб.: БХВ-Петербург, 2001. - 576 с.


Приложение


Текст программы

«createDB.php»

<! doctype html public «- //W3C //DTD HTML 4.0 //EN»>

<html>

<head>

<title>Untitled web-page</title>

</head>

<body>

<? php_connect («172.16.253.34», «it», «it»);_select_db («it»);

$query = «create table events (int(11) not null auto_increment,datetime not null default '0000-00-00 00:00:00',varchar(255) not null,varchar(255) not null,id (id))»;_query($query);

$query_indetif = «create table user (varchar(10) not null,varchar(10) not null,key (id))»;_query ($query_indetif);

$query_ins = «insert into user values ('root', 'admin', '1', 'description', 1, '[email protected]', «, «, «)»;_query ($query_ins);

?>

</body>

</html>

«index.php»

<? php(! require_once («authorization.inc»)) RedirectAndExit («login.phtml»);('config.inc');

$dbh = mysql_connect ($db_srvname, $db_user, $db_password) or die ('Невозможно установить соеденение с базой данных.');

mysql_select_db ($db_name) or die ('Невозможно установить активную БД.');

// удалить записи($DeleteEvents!= «)

{

$i=0;($REQUEST_METHOD== «POST»)(list ($key, $val) = each ($HTTP_POST_VARS))

{

$pos = strpos ($key, «delrecord»);(! ($pos === false))

{

$delid[$i] = $val;

$i++;

};

}($i > 0)

{

$delsect_ids= «'».join («', '»,$delid). «'»;

$sql = «DELETE FROM events WHERE id IN ($delsect_ids)»;

$result = mysql_query($sql);(!$result)

{«Could not successfully run query ($sql) from DB:». mysql_error();

}

}

}

?>

<! DOCTYPE HTML PUBLIC «- //W3C //DTD HTML 4.01 Transitional //EN»>

<html>

<head>

<title>БД событий. Авторизированная зона.</title>

<meta http-equiv= «Content-Type» content= «text/html; charset=windows-1251»>

</head>

<body>

<div align= «center»>

<h1>Ежедневник.</h1>

<form action= «index.php» method= «post» name= «mainform» id= «mainform»>

<table width= «90%» border= «1» cellspacing= «0» cellpadding= «0»>

<tr>

<td><div align= «center»><strong>Время</strong></div></td>

<td><div align= «center»><strong>Дата</strong></div></td>

<td><div align= «center»><strong>Заголовок</strong></div></td>

<td><div align= «center»><strong>Описание</strong></div></td>

<td><div align= «center»><strong>Удаление</strong></div></td>

</tr>

<?

$where = «»;($v == «day»)

$where = «WHERE datetime > CURRENT_DATE»;($v == «week»)

$where = «WHERE datetime >= DATE_SUB (CURRENT_DATE, INTERVAL 7 DAY)»;

$sql = «SELECT id, date_format (datetime, ' % H:%i') AS time, date_format (datetime, ' % d/%m/%Y') AS date, title, description FROM events$where»;

$result = mysql_query($sql);

$error = 0;(!$result)

{«Could not successfully run query ($sql) from DB:». mysql_error();

$error = 1;

}(mysql_num_rows($result) == 0)

{«No rows found, nothing to print.»;

$error = 1;

}

«addrecord.php»

<? php(! require_once («authorization.inc»)) RedirectAndExit («login.phtml»);('config.inc');

$dbh = mysql_connect ($db_srvname, $db_user, $db_password) or die ('Невозможно установить соеденение с базой данных.');

mysql_select_db ($db_name) or die ('Невозможно установить активную БД.');($AddRecord!= «»)

{($title ==»» || $description == «»)

$error = «Невозможно добавить запись!<br> Необходимо заполнить все поля.<br>»;

else

{($id == «»)

{

$sql= «INSERT INTO events (datetime, title, description) VALUES (NOW(), '$title', '$description')»;

}

{

$sql= «UPDATE events SET title='$title', description='$description' WHERE id='$id'»;

}

$result = mysql_query($sql);(!$result)

{«Could not successfully run query ($sql) from DB:». mysql_error();

}

{(«Location: index.php»);;

}

}

}($id!= «»)

{

$sql = «SELECT title, description FROM events WHERE id='$id'»;

$result = mysql_query($sql);(!$result)

{«Could not successfully run query ($sql) from DB:». mysql_error();

}

{

$row = mysql_fetch_array ($result, MYSQL_BOTH);

$title = $row [«title»];

$description = $row [«description»];

}

}

?>

<! DOCTYPE HTML PUBLIC «- //W3C //DTD HTML 4.01 Transitional //EN»>

<html>

<head>

<title>Добавить запись</title>

<meta http-equiv= «Content-Type» content= «text/html; charset=windows-1251»>

</head>

<body>

<? echo $error?>

<h3>Добавить запись:</h3>

<form action= «addrecord.phtml» method= «get» name= «mainform» id= «mainform»>

<input type= «hidden» name= «id» id= «id» value= "<? echo $id?>">

<table width= «90%» border= «0» cellspacing= «0» cellpadding= «5»>

<tr>

<td><div align= «right»><strong>Заголовок:&nbsp;&nbsp;</strong></div></td>

<td><input name= «title» type= «text» id= «title» size= «50» value= "<? echo $title?>"></td>

</tr>

<tr>

<td><div align= «right»><strong>Описание:&nbsp;&nbsp;</strong></div></td>

<td><textarea name= «description» cols= «50» rows= «7» id= «description»><? echo $description?></textarea></td>

</tr>

<tr>

<td colspan= «2»><div align= «center»>

<input type= «submit» name= «AddRecord» value= «Добавить запись»>

</div></td>

</tr>

</table>

</form>

<p><a href=»/">Вернуться на главную.</a></p>

</body>

</html>

«login.php»

<? php('config.inc');($nickname!= '' && $password!= «)

{

$dbh = mysql_connect ($db_srvname, $db_user, $db_password) or die ('Невозможно установить соеденение с базой данных.');

mysql_select_db ($db_name) or die ('Невозможно установить активную таблицу.');

$sql = «SELECT id FROM user WHERE nickname='$nickname' AND password='$password' AND superuser=1»;

$result = mysql_query($sql);(!$result)

{«Could not successfully run query ($sql) from DB:». mysql_error();;

}(mysql_num_rows($result)!= 0)

{

$row = mysql_fetch_array ($result, MYSQL_BOTH);

}($row)

{_start();_register ('is_auth_user');

$is_auth_user = rand();(«Location: index.php»);

}

{(«Location: login.phtml»);

}_close();

}

{<<<MAINWIN

<HTML>

<head>

<META HTTP-EQUIV= «Content-Type» CONTENT= «text/html; charset=Windows-1251»>

<script language= «JavaScript»>

<!-SelectIt() {.mainform.nickname.focus();

}

// ->

</script>

<link href='$current_dir/styles/$style_file' rel=stylesheet>

</head>

$sCentralBodyTag

<table height=100% border=0>

<tr>

<td align=center valign= «middle»>

<b>

<FORM action='login.phtml' method=post>

<TABLE border=0>

<TR><TD>

<INPUT type=text id=nickname name=nickname maxlength=8 value='root'>

</TD></TR>

<TR><TD>

<INPUT>

</TD></TR>

<TR><TD align=right><INPUT type=submit value=Вход>

</td></tr>

</table>

</td></tr>

</table>

</BODY>

</HTML>;

}

?>

«password.php»

<? php(! require_once («authorization.inc»)) RedirectAndExit («login.phtml»);('config.inc');

$dbh = mysql_connect ($db_srvname, $db_user, $db_password) or die ('Невозможно установить соеденение с базой данных.');

mysql_select_db ($db_name) or die ('Невозможно установить активную БД.');($Submit!= «»)

{($password == «»)

$error = «Пароль не должен быть пустым!<br>»;

else

{

$sql= «UPDATE user SET password='$password' WHERE superuser='1'»;

$result = mysql_query($sql);(!$result)

{«Could not successfully run query ($sql) from DB:». mysql_error();

}

{_write_close();(«Location: login.phtml»);;

}

}

}

?>

<! DOCTYPE HTML PUBLIC «- //W3C //DTD HTML 4.01 Transitional //EN»>

<html>

<head>

<title>Смена пароля</title>

<meta http-equiv= «Content-Type» content= «text/html; charset=windows-1251»>

</head>

<body>

<? echo $error?>

<h3>Смена пароля: </h3>

<form action= «password.phtml» method= «post» name= «mainform» id= «mainform»>

Новый пароль:

<input name= «password» type= «password» id= «password»>

<input type= «submit» name= «Submit» value= «Сменить»>

</form>

</body>

</html>


Пояснительная записка к курсовому проекту по теме: «Разработка приложений клиент-сервер для сете

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ