1.Фаулер М., Скотт К. «UML в кратком изложении. Применение стандартного языка объектного моделирования.» – М.: «Мир», 1999.
2.Матросов А.В., Чаунин М.П. «Самоучитель Perl» — СПб: «БХВ — Санкт-Петербург», 2000.
3.Кристиансен Т., Торкингтон Н. «Perl: библиотека программиста» — СПб: «Питер», 2001.
4.Браун М., Ханникат Д. «HTML 3.2 в подлиннике» — СПб: «БХВ — Санкт-Петербург», 2002.
5.Флэнаган Д. «JavaScript. Подробное руководство, 5-е издание» - СПб-М: «Символ-Плюс», 2008.
6.Гудман Д. «JavaScript и DHTML. Сборник рецептов. Для профессионалов» — СПб: «Питер», 2004.
7.Мартин Браун. Perl. Архив программ. – М.: «Издательство БИНОМ», 2001.
8.Кольчугина Е.А. Программирование в сетях. Методические указания к выполнению лабораторных работ – Пенза, ПГУ, 2003.
Приложение А
(обязательное)
Код приложения
Администраторская часть
Admin.html
<HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Система управления сайтом</title>
<meta name="description" content="">
<meta name="keywords" con22:00 22.12.2009tent="">
|
|
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<link rel="STYLESHEET" type="text/css" href="css/admin.css">
<link rel="stylesheet" href="/css/ui.all.css" type="text/css" media="all" />
<SCRIPT language=JavaScript src="/js/jquery-1.2.6.pack.js"></SCRIPT>
<script src="/js/ui.datepicker.js" type="text/javascript"></script>
<script type="text/javascript" src="/admin/js/admin.js"></script>
</head>
<body>
<center>
<table cellspacing="0" cellpadding="0" border="0">
<td nowrap style="background: url(images/fon01.gif) repeat-y;"></td>
<td height="180" bgcolor="black" align="center">
<a href="/admin/"><img src="images/watch-img.jpg" height="180" vspace=3 border="0" alt="DATA"></a>
</td>
<td bgcolor="#330000"
<table cellspacing="0" cellpadding="0" border="0">
<td bgcolor="#324D44" height="130" align="center"><font color="#00FFFF" size="8" face="DigifaceWide">Shop of hours</font>
</td>
<tr>
<td width="100%">
<table height="57" cellspacing='0' cellpadding='0' border='0' >
<tr
<td nowrap></td>
<td class="itlogo"><font color="#00CC33">АДМИНИСТРАТОРСКАЯ ЧАСТЬ САЙТА</font></td>
<td bgcolor="#324D44"></td>
<td class="white" align="center"><a href="#" onclick="javascript: document.exit.submit(); return false;"><font color="#00CC33">Выход из Системы</font></a></td>
|
|
<form style="display: none" method="POST" action="" id="exit" name="exit"><input type="hidden" name="action" value="loginadm_end"></form>
</tr>
</table>
</td>
</table>
</td>
</table>
<table cellspacing="0" cellpadding="0" border="0">
<tr>
<td nowrap style="background: url(images/fon01.gif) right repeat-y;">
<table cellspacing='0' cellpadding='0' border='0' bgcolor="#000000">
<tr>
<td nowrap style="background: url(images/fon01.gif) repeat-y;"></td>
<td align="right">
<table cellspacing='0' cellpadding='0' border='0'>
<tr height="26">
<td style="background: url(images/menu_header.jpg) no-repeat; padding-left:25px;" class="title_catalog">Меню</td>
</tr>
</table>
<table cellspacing='0' cellpadding='0' border='0'>
<tr height="26">
<td nowrap></td>
<td width="100%">
<br>
<table height="40" border='0' cellspacing='0' cellpadding='0'>
<tr>
<td ><img src='images/square_or.gif' height='9' border='0' alt=''></td>
<td ><a href='?act=firma' class='menu' ><font color="#ffffff">Фирма производитель</font></a></td>
</tr>
</table>
<br>
<table height="40" border='0' cellspacing='0' cellpadding='0'>
<tr>
<td ><img src='images/square_or.gif' height='9' border='0' alt=''></td>
<td ><a href='?act=model' class='menu' ><font color="#ffffff">Модели часов</font></a></td>
</tr>
</table>
<br>
<table height="40" border='0' cellspacing='0' cellpadding='0'>
<tr>
<td ><img src='images/square_or.gif' height='9' border='0' alt=''></td>
<td ><a href='?act=sale' class='menu' ><font color="#ffffff">Заказы</font></a></td>
</tr>
</table>
</td>
<td nowrap></td>
</tr>
</table>
<table cellspacing='0' cellpadding='0' border='0'>
<tr height="18">
<td style="background: url(images/fon07.jpg) no-repeat;"></td>
|
|
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing='0' cellpadding='0' border='0'>
<tr height="55">
<td nowrap style="background: url(images/fon01.gif) repeat-y;"></td>
<td align="center" style="padding-top:30px;" bgcolor="#000000">© Kino</td>
</tr>
</table>
<table cellspacing='0' cellpadding='0' border='0'>
<tr height="8">
<td style="background: url(images/fon08.gif) right no-repeat;"></td>
</tr>
</table>
</td>
<td nowrap bgcolor="#979797"></td>
<td bgcolor="#CCFFFF" style="padding-top:3px;padding-bottom:3px;padding-right:3px;border: #146492 solid; border-width: 1px 0px 0px 0px;"
<!-- Content -->
<div style="margin: 0 10 0 10">
<div style=" font-size:13px; font-weight:bold"><TMPL_IF title><TMPL_VAR NAME=title></TMPL_IF></div>
<div style=" font-size:11px; font-weight:bold; color:#999999; margin-bottom:20px;"><TMPL_IF title2><TMPL_VAR NAME=title2></TMPL_IF></div>
<TMPL_IF ok><div class="ok"><TMPL_LOOP NAME=ok><li><TMPL_VAR NAME="text"></li></TMPL_LOOP></div></TMPL_IF>
<TMPL_IF error><div class="error"><TMPL_LOOP NAME=error><li><TMPL_VAR NAME="text"></li></TMPL_LOOP></div></TMPL_IF>
<div style="margin: 0 11 0 11">
<TMPL_IF content><TMPL_VAR NAME=content></TMPL_IF>
</div>
<div style="height:20px;"> </div>
</div>
<!-- /Content -->
</td>
<td nowrap bgcolor="#979797"></td>
<td nowrap></td>
</tr>
</table>
<table cellspacing="0" cellpadding="0" border="0">
<tr height="51">
<td nowrap></td>
<td nowrap style="background: url(images/bot_angle_left.gif) no-repeat;"></td>
<td style="background: url(images/bot_cent.gif) repeat-x;" align="center">
<table cellspacing='0' cellpadding='0' border='0'>
<tr>
<td>Курсовая работа по программированию в сетях
<!-- <a href="" class="botmenu">Ссылка 1</a> -->
</td>
</tr>
</table>
</td>
<td nowrap style="background: url(images/bot_angle_right.gif) no-repeat;"></td>
<td nowrap></td>
|
|
</tr>
</table>
</center>
</body>
</html>
Admin.pl
#!/usr/bin/perl
use lib '../mod';
use DBI();
use DBD::mysql;
use CGI qw/:standard/;
use CGI::Cookie;
use Time::Local;
use CGI::Carp 'fatalsToBrowser';
use HTML::Template;
require "../setup.inf"; #переменные
require "sub.pm"; #переменные
#подключеие БД
$dbh = DBI->connect("DBI:mysql:database=$db;host=$host","$user","$password");
$dbh->do("SET NAMES 'cp1251'");
$fid = param('id');
$fid2 = param('id2');
$action = param('action');
$login_in = param('login_in'); # для входа по паролю
$pass_in = param('pass_in'); #
$buffer2 = $ENV{'QUERY_STRING'};
#От SQL Иньекций
$fid =~ s/('|"|\||-|=|~|>|<|(|)|\$|#)//g;
$fid2 =~ s/('|"|\||-|=|~|>|<|(|)|\$|#)//g;
$action =~ s/('|"|\||-|=|~|>|<|(|)|\$|#)//g;
$login_in =~ s/('|"|\||-|=|~|>|<|(|)|\$|#)//g;
$pass_in =~ s/('|"|\||-|=|~|>|<|(|)|\$|#)//g;
#/От SQL Иньекций
@pairs2 = split(/&/, $buffer2);
foreach $pair2 (@pairs2) {
($name2, $value2) = split(/=/, $pair2);
$value2 =~ tr/+/ /;
$value2 =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$FORM{$name2} = $value2;
}
$form_fid = $FORM{"id"}; $form_fid =~ s/('|"|\||-|=|~|>|<|(|)|\$|#)//g;
$viev = $FORM{"viev"};
$act = $FORM{"act"};
if ($act eq ''){ #если $act пусто. Возможно при нажатии на кнопку в форме
($xxx) = $ENV{'REQUEST_URI'} =~ m#([^\\/:]+)$#;
# ($act) = split (/\./,$xxx);
# ($act, $fid) = split (/-/,$act);
@pairs2 = split(/&/, $xxx);
foreach $pair2 (@pairs2) {
($name2, $value2) = split(/=/, $pair2);
$value2 =~ tr/+/ /;
$value2 =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$FORM{$name2} = $value2;
}
$act = $FORM{'act'};
$fid = $FORM{'id'};
$viev = $FORM{"viev"};
}
else {$fid = $form_fid;}
#Оставляем только числа
if ($fid) {$fid =~ s/(\d+)/$1/;$fid = $1;}
if ($fid2){$fid2 =~ s/(\d+)/$1/;$fid2 = $1;}
#/Оставляем только числа
#------------------------------Время------------------------
$timeoffset = 0;
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time + (3600*$timeoffset));
$mon++;
$mday = "0$mday" if ($mday < 10);
$mon = "0$mon" if ($mon < 10);
$hour = "0$hour" if ($hour < 10);
$min = "0$min" if ($min < 10);
$year = 2000 + ($year - 100);
$data_form = "$mday.$mon.$year";
$reg_date = "$year-$mon-$mday";
$time_form = "$hour:$min:$sec";
#-----------------------------------------------------------
#############################################
# Проверка паролей #
#############################################
require "modul/autentification.pl";
#############################################
####<<< SEREDINKA
if ($act eq '') {require "ind.pl";}
elsif ($act eq 'firma') {require "firma.pl";}
elsif ($act eq 'model') {require "model.pl";}
elsif ($act eq 'sale') {require "sale.pl";}
else {print "Location: http://$ENV{'SERVER_NAME'}/admin/\n\n"; exit;}
####>>>
#Информационные сообщения
if (@ok){$HTML_SITE{ok} = \@ok;}
if (@error){$HTML_SITE{error} = \@error;}
#/Информационные сообщения
print "Content-type: text/html\n\n";
my $template = HTML::Template->new(filename => 'html/admin.html');
$template->param(%HTML_SITE);
my $HTML_SITE_out = $template->output;
print <<EOF;
$HTML_SITE_out
EOF
#отключение БД
$dbh->disconnect();
Ind.pl
1;
$HTML_SITE{title} = 'Главная страница';
$HTML_SITE{title2} = 'Добро пожаловать в систему администрирования Интернет-магазина';
$HTML_SITE{content} = 'Для работы с данной частью приложения воспользуйтесь пунктами меню в левой части экрана.';
1;
Model.pl
1;
my $sth = $dbh->prepare("SELECT id,Name_Firma FROM Firma");
$sth->execute();
while (my $ref = $sth->fetchrow_hashref()) {
$sel.=qq[<option value="$ref->{'id'}">$ref->{'Name_Firma'}</option>];
}
$sth->finish();
my $sth = $dbh->prepare("SELECT id,name FROM Pol");
$sth->execute();
while (my $ref = $sth->fetchrow_hashref()) {
$sel1.=qq[<option value="$ref->{'id'}">$ref->{'name'}</option>];
}
$sth->finish();
my $sth = $dbh->prepare("SELECT id,name FROM Kreplen");
$sth->execute();
while (my $ref = $sth->fetchrow_hashref()) {
$sel2.=qq[<option value="$ref->{'id'}">$ref->{'name'}</option>];
}
$sth->finish();
my $sth = $dbh->prepare("SELECT id,name FROM Mechanism");
$sth->execute();
while (my $ref = $sth->fetchrow_hashref()) {
$sel3.=qq[<option value="$ref->{'id'}">$ref->{'name'}</option>];
}
$sth->finish();
#act
if ($action eq 'Изменить') {&edit;}
elsif ($action eq 'Добавить'){&add;}
elsif ($action eq 'Удалить') {&del;}
#viv
if ($viev eq 'edit') {&blokedit;}
elsif ($viev eq 'add') {&blokadd;}
else {&blokviev;}
################################################################################
sub blokviev {
my $sth = $dbh->prepare("SELECT Model.*,Firma.Name_Firma as Nfirma,Pol.name as Pname,Kreplen.name as Kname,Mechanism.name as Mname
FROM Model inner join Firma on Model.id_Firma = Firma.id
inner join Pol on Model.id_Pol = Pol.id
inner join Kreplen on Model.id_Kreplen = Kreplen.id
inner join Mechanism on Model.id_Mechanism = Mechanism.id");
$sth->execute();
while (my $ref = $sth->fetchrow_hashref()) {
if (!($ref->{Name_Model})){$ref->{Name_Model} = "Не задано";}
my $hd; if ($ref->{ehide}){$hd="_h";}
$HTML_SITE{content}.=<<LINES;
<table border=1 cellpadding="0" cellspacing="0" align="center">
<td height=50 align="center">
<img src="/admin/Photos/$ref->{Photo}" align="absmiddle">
</td>
<td align="center"><b><font color="blue">$ref->{Nfirma}</font></b>
</td>
<td align="center"><b><font color="blue">$ref->{Name_Model}</font></b>
</td>
<td align="center"><b><font color="red">$ref->{Price}</font> .</b>
</td>
<td><a href="?act=$act&id=$ref->{id}&viev=edit"><img src="/admin/images/editor.jpg" height="40" align="absmiddle" alt="Редактировать"></a>
</td>
<td><a href="#" onclick="del_id('$ref->{id}')"><img src="/admin/images/Urna.jpg" height="40" align="absmiddle" alt="Удалить"></a>
</td>
</table>
LINES
}
$sth->finish();
$HTML_SITE{content}.=<<LINES;
<form style="display: none" method="POST" action="" id="deletes" name="deletes"><input type="hidden" name="ids" value=""><input type="hidden" name="action" value="Удалить"></form>
LINES
$HTML_SITE{title} = "Список моделей часов [<a href=\"?act=$act&viev=add\">Добавить</a>]";
$HTML_SITE{title2} = 'Просмотр';
}
################################################################################
sub blokedit {
my ($db_id,$db_Firma,$db_Name_Model,$db_Mechanism,$db_Kreplen,$db_Pol,$db_Data_post,$db_Price,$db_Photo) =
$dbh->selectrow_array("SELECT id,id_Firma,Name_Model,id_Mechanism,id_Kreplen,id_Pol,Data_post,Price,Photo FROM $act WHERE id='$fid'");
$HTML_SITE{content}=<<LINES;
<div style="clear:both"></div>
<form method="POST" enctype="multipart/form-data">
<div class="nm">Фирма</div>
<div class="nm2"><select name="Firma" size="1" style="width:30%">
$sel
</select>
<script>\$('option[\@value=$db_Firma]').get(0).selected = 'selected';</script>
</div>
<div class="nm">Название</div>
<div class="nm2"><input name="Name_Model" value="$db_Name_Model" type="text" width=200"></div>
<div class="nm">Механизм</div>
<div class="nm2"><select name="Mechanism" size="1" style="width:30%">
$sel3
</select>
<script>\$('option[\@value=$db_Mechanism]').get(1).selected = 'selected';</script>
</div>
<div class="nm">Крепление</div>
<div class="nm2"><select name="Kreplen" size="1" style="width:30%">
$sel2
</select>
<script>\$('option[\@value=$db_Kreplen]').get(2).selected = 'selected';</script>
</div>
<div class="nm">Пол</div>
<div class="nm2"><select name="Pol" size="1" style="width:30%">
$sel1
</select>
<script>\$('option[\@value=$db_Pol]').get(3).selected = 'selected';</script>
</div>
<div class="nm">Дата поставки</div>
<div class="nm2"><input name="Data_post" value="$db_Data_post" type="text" width=200"></div>
<div class="nm">Стоимость</div>
<div class="nm2"><input name="Price" value="$db_Price" type="text" width=200"></div>
<div class="nm">Изображение</div>
<div class="nm2"><input name="Photo" value="$db_Photo" type="text" width=200"></div>
<div class="nm"><input name="action" type="submit" value="Изменить"></div>
<input name="id" value="$db_id" type="hidden">
</form>
LINES
$HTML_SITE{title} = 'Список моделей часов';
$HTML_SITE{title2} = 'Редактор';
}
sub blokadd {
$HTML_SITE{content}=<<LINES;
<div style="clear:both"></div>
<form method="POST" enctype="multipart/form-data">
<div class="nm">Фирма</div>
<div class="nm2"><select name="Firma" size="1" style="width:30%">
$sel
</select></div>
<div class="nm">Название</div>
<div class="nm2"><input name="Name_Model" value="$db_name" type="text" width=200"></div>
<div class="nm">Механизм</div>
<div class="nm2"><select name="Mechanism" size="1" style="width:30%">
$sel3
</select></div>
<div class="nm">Крепление</div>
<div class="nm2"><select name="Kreplen" size="1" style="width:30%">
$sel2
</select></div>
<div class="nm">Пол</div>
<div class="nm2"><select name="Pol" size="1" style="width:30%">
$sel1
</select></div>
<div class="nm">Дата поставки</div>
<div class="nm2"><input name="Data_post" value="$db_name" type="text" style="width=200"></div>
<div class="nm">Стоимость</div>
<div class="nm2"><input name="Price" value="$db_name" type="text" style="width=200"></div>
<div class="nm">Изображение</div>
<div class="nm2"><input name="Photo" value="$db_name" type="text" style="width=200"></div>
<div class="nm"><input name="action" type="submit" value="Добавить"></div>
<input name="firm" value="1" type="hidden">
</form>
LINES
$HTML_SITE{title} = "Список моделей часов";
$HTML_SITE{title2} = 'Добавление';
}
################################################################################
sub edit {
my $Firma = param('Firma'); $Firma = $dbh->quote($Firma);
my $Name_Model = param('Name_Model'); $Name_Model = $dbh->quote($Name_Model);
my $Mechanism = param('Mechanism'); $Mechanism = $dbh->quote($Mechanism);
my $Kreplen = param('Kreplen'); $Kreplen = $dbh->quote($Kreplen);
my $Pol = param('Pol'); $Pol = $dbh->quote($Pol);
my $Data_post = param('Data_post'); $Data_post = $dbh->quote($Data_post);
my $Price = param('Price'); $Price = $dbh->quote($Price);
my $Photo = param('Photo'); $Photo = $dbh->quote($Photo);
my $sth = $dbh->prepare("UPDATE $act SET id_Firma=$Firma,Name_Model=$Name_Model,id_Mechanism=$Mechanism,id_Kreplen=$Kreplen,id_Pol=$Pol,Data_post=$Data_post,Price=$Price,Photo=$Photo WHERE (id='$fid')");
if ($sth->execute()){
push @ok, {text=>'Запись отредактирована'};
$sth->finish(); }
else {push @error, {text=>'Запись не отредактирована'}; }
}
sub add {
my $Firma = param('Firma');
my $Name_Model = param('Name_Model');
my $Mechanism = param('Mechanism');
my $Kreplen = param('Kreplen');
my $Pol = param('Pol');
my $Data_post = param('Data_post');
my $Price = param('Price');
my $Photo = param('Photo');
$Firma = $dbh->quote($Firma);
$Name_Model = $dbh->quote($Name_Model);
$Mechanism = $dbh->quote($Mechanism);
$Kreplen = $dbh->quote($Kreplen);
$Pol = $dbh->quote($Pol);
$Data_post = $dbh->quote($Data_post);
$Price = $dbh->quote($Price);
$Photo = $dbh->quote($Photo);
my $sth = $dbh->prepare("insert into $act (id_Firma,Name_Model,id_Mechanism,id_Kreplen,id_Pol,Data_post,Price,Photo) values ($Firma,$Name_Model,$Mechanism,$Kreplen,$Pol,$Data_post,$Price,$Photo)");
if ($sth->execute()){
push @ok, {text=>"Запись добавлена"};
$sth->finish(); }
else {push @error, {text=>"Запись не добавлена"}; }
}
sub del {
my $ids = param("ids"); $ids =~s/\D//g;
if ($ids) {
#Удаление из базы
$sth=$dbh->do("DELETE FROM $act WHERE (id='$ids')"); # удаляем старые
if ($sth) { push @ok, {text=>"Элемент удалён"};}
else { push @error, {text=>"Элемент удалён"};}
}
else {
push @error, {text=>"Ошибка. Возможно отключен JavaScript"};
}
}
1;
Sale.pl
1;
if ($action eq 'Удалить') {&del;}
&blokviev;
################################################################################
sub blokviev {
my $sth = $dbh->prepare("SELECT Sale.*,Model.Name_Model as Mname,Schet.fio as Sfio,
Schet.data as Sdata, Schet.nom as Snom, Firma.Name_Firma as Fname, Model.Price as Mprice
FROM Sale inner join Model on Sale.Model_id = Model.id
inner join Schet on Sale.Schet_id = Schet.id
inner join Firma on Model.id_Firma = Firma.id");
$sth->execute();
while (my $ref = $sth->fetchrow_hashref()) {
if (!($ref->{id})){$ref->{id} = "Не задано";}
my $hd; if ($ref->{ehide}){$hd="_h";}
$HTML_SITE{content}.=<<LINES;
<table border=1 cellpadding="0" cellspacing="0" align="center">
<td align="center"><b><font color="blue">$ref->{Snom}</font></b>
</td>
<td align="center"><b><font color="blue">$ref->{Sfio}</font></b>
</td>
<td align="center"><b><font color="blue">$ref->{Fname}</font></b>
</td>
<td align="center"><b><font color="blue">$ref->{Mname}</font></b>
</td>
<td align="center"><b><font color="blue">$ref->{Sdata}</font></b>
</td>
<td align="center"><b><font color="blue">$ref->{Mprice}</font> р.</b>
</td>
<td><a href="#" onclick="del_id('$ref->{id}')"><img src="/admin/images/Urna.jpg" height="40" align="absmiddle" alt="Удалить"></a>
</td>
</table>
LINES
}
$sth->finish();
$HTML_SITE{content}.=<<LINES;
<form style="display: none" method="POST" action="" id="deletes" name="deletes"><input type="hidden" name="ids" value=""><input type="hidden" name="action" value="Удалить"></form>
LINES
$HTML_SITE{title} = "Просмотр сведений о покупках";
}
################################################################################
sub del {
my $ids = param("ids"); $ids =~s/\D//g;
if ($ids) {
#Удаление из базы
$sth=$dbh->do("DELETE FROM $act WHERE (id='$ids')"); # удаляем старые
if ($sth) { push @ok, {text=>"Элемент удалён"};}
else { push @error, {text=>"Элемент не удалён"};}
}
else {
push @error, {text=>"Ошибка. Возможно отключен JavaScript"};
}
}
1;