Разработка программного продукта "Каталог автомобилей марки BMW"

Тип работы:
Курсовая
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

СОДЕРЖАНИЕ

  • ОБОЗНАЧЕНИЯ И СОКРАЩЕНИЯ
  • ВВЕДЕНИЕ
  • 1. АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ
    • 1.1 Анализ существующих аналогов
    • 1.2 Постановка задачи
  • 2. РАЗРАБОТКА ПРОГРАММНОГО ПРОЕКТА «Каталог автомобилей марки BMW»
    • 2.1 Спецификация требований
    • 2.2 Обоснование выбора информационных технологий
    • 2.3 Модель базы данных
    • 2.4 Схема алгоритма работы сайта
    • 2.5 Схема алгоритма авторизации администратора
  • 3. РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ
  • ЗАКЛЮЧЕНИЕ
  • СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
  • ПРИЛОЖЕНИЕ
    • Исходный код

ОБОЗНАЧЕНИЯ И СОКРАЩЕНИЯ

БД — База данных.

ИД — Идентификатор.

СУБД — Система управления базами данных.

SQL — Structured Query Language.

PHP — Personal Home Pages (Hypertext preprocessor)

ВВЕДЕНИЕ

Чем удобны каталоги в интернете? По сути, каталог товаров и услуг в Интернете является уникальной возможностью рассказать о своих услугах или предлагаемой продукции. Каждая карточка определенного товара обычно содержит в себе его изображение, цену, условия поставки, подробное описание и любые характеристики, которые добавляет пользователь. Помимо этого, к описанию товара могут быть прикреплены файлы, например презентация, прайс-лист. Любой виртуальный каталог всегда заключает в себе удобные средства поиска информации и навигации. В этом и заключаются основные плюсы интернет-каталогов: удобство и быстрота поиска нужной вам информации. Для данной курсовой работы я выбрал тему создание сайта-каталога автомобилей марки «BMW». Каждый день мы видим автомобили и с каждым днем поклонников данной модели становиться все больше и больше. Хотя немногие знают, что история автомобиля началась ещё в 1768 году вместе с созданием паросиловых машин, способных перевозить человека. В 1806 году появились первые машины, приводимые в движение двигателями внутреннего сгорания на горючем газе, что привело к появлению в 1885 году повсеместно используемого сегодня газолинового или бензинового двигателя внутреннего сгорания. Машины, работающие на электричестве ненадолго появились в начале XX века, но почти полностью исчезли из поля зрения вплоть до начала XXI века, когда снова возникла заинтересованность в малотоксичном и экологически чистом транспорте. По существу, раннюю историю автомобиля можно разделить на этапы, различающиеся преобладающим способом самоходного движения. Поздние этапы определялись тенденциями в размере и стилистике внешнего вида, а также предпочтениями в целевом использовании. Во что превратились автомобили со времен их появление, можно увидеть с помощью данного каталога, на примере одного успешного немецкого производителя автомобилей — BMW.

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

1. Анализ предметной области

1.1 Анализ существующих аналогов

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

1.1. 1 Рассмотрим сайт http: //bmw. avtorinok. ru/auto/

Сайт-каталог «BMW» для российских пользователей, с огромной базой данных и подробной информацией о каждой модели автомобиля.

Достоинства:

1 Удобство выбора нужной серии автомобиля.

2 Наглядность внешнего вида автомобиля для каждой серии.

3 Большой выбор.

4 История создания и подробная характеристика для каждой модели.

Недостатки:

1 Невзрачное меню.

2 Наличие рекламы на сайте.

1.1. 2 Рассмотрим сайт http: //bmw. by

Данный сайт является официальным сайтом «BMW» в Беларуси и содержит множество информацию о различных моделях амтомобиле данный марки, а так же последний новости и нововведения компании.

Достоинства:

1 Наличие последних новостей компании.

2 Отсутствие «левой «рекламы.

3 Огромный выбор.

4 Современное оформление сайта.

Недостатки:

1 Труднодоступность нужной информации о выбранной модели

1.1. 3 Рассмотрим сайт http: //bmw. com

Данный сайт является официальным сайтом «BMW».

Достоинства:

1 Отличное меню выбора, с наличием фотографии внешнего вида для каждой модели.

2 Последние новости компании.

3 Весь модельный ряд.

4 Подробнейшая информация о выбранной модели автомобиля.

5 Возможность перенаправления посетителя данного сайта, на сайт bmw непосредственно в его стране.

Недостатки:

1 Данный сайт может быть представлен только на двух языках: Английский и Немецкий.

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

Требуется реализовать программное средство сайт-каталог. Данное программное средство будет отвечать следующим требованиям:

1 Удобное и наглядное меню выбора сери и автомобиля.

2 Удобное и наглядное меню выбора модели автомобиля.

3 Удобная навигация по сайту.

4 Возможность добавления комментария к выбранной модели.

2. Разработка программного проекта каталога автомобилей марки «BMW»

2.1 Спецификации требований

2.1. 1Варианты использования программного средства

1 Найти информацию о интересующей вас модели автомобиля.

2Узнать отзывы и комментарии о нужной модели оставленные другими пользователями.

3 Узнать краткое описание серий автомобилей данной марки.

4 Оставить свой отзыв на сайте.

2.1.2 Интерфейс

Структура сайта следующая:

Главная страница. На ней отображается навигация между сериями автомобилей и краткое описание данных серий с фотографиями.

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

В разделе «Comments Editor» Вы cможете увидеть все комментарии оставленные на данном сайте, дату их написания и их автора. Так же из данной панели администратора существует возможность удаления комментариев. Доступ в панель администратора «Comments Editor» осуществляется по паролю.

2.1.3 Безопасность

Безопасность данного программного средства осуществляется посредством защиты от SQL-иньекций (SQL инъекция — техника внедрения вредоносных данных в SQL утверждение, которые затем делают уязвимой и доступной информацию, содержащуюся в базах данных сайта) а также посредством защиты от внедрения html-кодов при оставлении комментария на сайте. Данная защита достигается с помощью возможностей языка php.

2.2 Обоснование выбора информационных технологий

В качестве языка программирования для реализации данного программного средства мной был выбран язык PHP.

Преимущества PHP:

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

1 традиционностью;

2 простотой;

3 эффективностью;

4 безопасностью;

5 гибкостью.

Существует еще одна «характеристика», которая делает РНР особенно привлекательным: он распространяется бесплатно! Причем, с открытыми исходными кодами (Open Source).

Традиционность:

Язык РНР будет казаться знакомым программистам, работающим в разных областях. Многие конструкции языка позаимствованы из Си, Perl.

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

И хотя PHP является довольно молодым языком, он обрел такую популярность среди web-программистов, что на данный момент является чуть ли не самым популярным языком для создания web-приложений (скриптов).

Простота:

Сценарий РНР может состоять из 10 000 строк или из одной строки -- все зависит от специфики вашей задачи. Вам не придется подгружать библиотеки, указывать специальные параметры компиляции или что-нибудь в этом роде. Механизм РНР просто начинает выполнять код после первой экранирующей последовательности (< ?) и продолжает выполнение до того момента, когда он встретит парную экранирующую последовательность (?>). Если код имеет правильный синтаксис, он исполняется в точности так, как указал программист.

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

Большое разнообразие функций PHP избавят вас от написания многострочных пользовательских функций на C или Pascal.

Эффективность:

Эффективность является исключительно важным фактором при программировании для многопользовательских сред, к числу которых относится и web.

Очень важное преимущество PHP заключается в его «движке». «Движок» PHP не является ни компилятором, ни интерпретатором. Он является транслирующим интерпретатором. Такое устройство «движка» PHP позволяет обрабатывать сценарии с достаточно высокой скоростью.

По некоторым оценкам, большинство PHP-сценариев (особенно не очень больших размеров) обрабатываются быстрее аналогичных им программ, написанных на Perl. Однако, чтобы не делали разработчики PHP, откомпилированные исполняемые файлы будут работать значительно быстрее — в десятки, а иногда и в сотни раз. Но производительность PHP вполне достаточна для создания вполне серьезных web-приложений.

Безопасность:

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

Средства безопасности системного уровня

В РНР реализованы механизмы безопасности, находящиеся под управлением администраторов; при правильной настройке РНР это обеспечивает максимальную свободу действий и безопасность. РНР может работать в так называемом безопасном режиме (safe mode), который ограничивает возможности применения РНР пользователями по ряду важных показателей. Например, можно ограничить максимальное время выполнения и использование памяти (неконтролируемый расход памяти отрицательно влияет на быстродействие сервера). По аналогии с cgi-bin администратор также может устанавливать ограничения на каталоги, в которых пользователь может просматривать и исполнять сценарии РНР, а также использовать сценарии РНР для просмотра конфиденциальной информации на сервере (например, файла passwd).

Средства безопасности уровня приложения

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

Гибкость

Поскольку РНР является встраиваемым (embedded) языком, он отличается исключительной гибкостью по отношению к потребностям разработчика. Хотя РНР обычно рекомендуется использовать в сочетании с HTML, он с таким же успехом интегрируется и в JavaScript, WML, XML и другие языки. Кроме того, хорошо структурированные приложения РНР легко расширяются по мере необходимости (впрочем, это относится ко всем основным языкам программирования).

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

Поскольку РНР не содержит кода, ориентированного на конкретный web-сервер, пользователи не ограничиваются определенными серверами (возможно, незнакомыми для них). Apache, Microsoft IIS, Netscape Enterprise Server, Stronghold и Zeus -- РНР работает на всех перечисленных серверах. Поскольку эти серверы работают на разных платформах, РНР в целом является платформенно-независимым языком и существует на таких платформах, как UNIX, Solaris, FreeBSD и Windows 95/98/NT/2000/XP/2003.

Наконец, средства РНР позволяют программисту работать с внешними компонентами, такими как Enterprise Java Beans или СОМ-объекты Win32. Благодаря этим новым возможностям РНР занимает достойное место среди современных технологий и обеспечивает масштабирование проектов до необходимых пределов.

Бесплатное распространение:

Стратегия Open Source, и распространение исходных текстов программ в массах, оказало несомненно благотворное влияние на многие проекты, в первую очередь -- Linux, хотя и успех проекта Apache сильно подкрепил позиции сторонников Open Source. Сказанное относится и к истории создания РНР, поскольку поддержка пользователей со всего мира оказалась очень важным фактором в развитии проекта РНР.

информационный база код сайт

2.3 Модель базы данных

В данной работе использовалась база данных на основе свободной системы управления базами данных MySQL. Была создана база данных под названием bmw. (Рисунок 1)

Рисунок 1. База данных

В базе данных 4 таблицы:

2.3.1 cars — таблица, которая хранит в себе данные об автомобилях

Таблица включает следующие поля:

1 id: int (5) — идентификатор автомобиля.

2 ser: varchar (10) — серия автомобиля.

3 name: varchar (255) — название.

4 image: varchar (250) — ссылка на фото данного авто.

5 description: text — описание в html-коде.

2.3.2 series -таблица, которая хранит в себе существующие серии автомобилей «BMW».

Таблица включает следующие поля:

1 id: int (5) — идентификатор серии.

2 ser: varchar (255) — буква серии.

3 title: varchar (30) — название серии целиком.

4 image: varchar (255) — ссылка на фото автомобиля данной серии.

5 description: text — описание данной серии.

2.3.3 comments -таблица, которая хранит комментарии пользователей.

Таблица включает следующие поля:

1 id: int (5) — идентификатор комментария.

2 post: int (6) — идентификатор поста к которому относится данный комментарий.

3 author: varchar (100) — автор комментария.

4 text: text — текст комментария.

5 date: date — дата написания комментария.

2.3.4 userlist — таблица пользователей панели администратора.

Таблица включает следующие поля:

1 id: int (3) — идентификатор пользователя.

2 user: varchar (50) — login пользователя.

3 pass: varchar (50) — название категории или подкатегории.

2.4 Схема алгоритма работы сайта

Схема алгоритма выполнена на листе формата А1. Данная схема отображает алгоритм работы с сайтом. (Рисунок 2)

.

Рисунок 2. Алгоритм работы с сайтом — каталогом автомобилей «BMW»

2.5 Схема алгоритма авторизации администратора

Следующая схема отображает алгоритм авторизации админинистратора на сайт (Рисунок 3)

Рисунок 3. Схема алгоритма авторизации администратора

3. Руководство пользователя

3.1 Клиенская часть

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

Рисунок 4

Индексная страница отображает 8 серий автомобиля марки «BMW» (Рисунок 5) c их кратким описанием и некоторыми фактами концерна BMW.

Рисунок 5

При выборе серии пользователь перенаправляется на страницу которая отображает все автомобили выбранной им серии, все автомобили отображаются в строгой таблице: по горизонтали- 3 шт., по вертикали — зависит от количества автомобилей в данной серии. (для примера выбрана 5 серия автомобилей BMW, см. Рисунок 6)

Рисунок 6

При выборе автомобиля пользователь перенаправляется на следующую страницу (для примера выбран автомобиль M5 — Седан, 4-дв (Е60))(см. Рисунок 7)

Рисунок 7

Под фотографиями выбранного автомобиля у пользователя естьвозможность оставить комментарии. (см. Рисунок 8):

Если комментарии у данного автомобиля уже есть, то они будут отображены следующим образом. (см. Рисунок 9)

Рисунок 8

Рисунок 9

3.2 Администраторская часть

При выборе на индексной странице сайта ссылки «Comments Editor» запрашиваеся логин и пароль для авторизации в администраторскую часть сайта. (Рисунок 10)

Рисунок 10

И при успешной авторизации пользователь попадает в раздел редактирования комментариев. Там он видит все комментарии оставленные посетителями на сайте, имена под которыми оставлялись данные комментарии и число, когда комментарий был добавлен. (см. Рисунок 11)

Рисунок 11

Заключение

В результате проведенной работы было создано программное средство «Каталог автомобилей марки „BMW“».

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

1 Просмотр информации общего плана о сериях автомобилей данной марки.

2 Просмотр автомобилей выбранной серии.

3 Удобная навигация по сайту.

4 Возможность добавления комментариев.

5 Доступ к администраторской части сайта по паролю.

6 Возможность просмотра и удаления комментариев администратором.

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1 Wikipedia [Электронный ресурс] - Электронные данные — Режим доступа: http: //wikipedia. org/

2 PHP [Электронный ресурс] - Электронные данные — Режим доступа: http: //php. net/.

3 Портал по PHP and MySQL [Электронный ресурс] - Электронные данные — Режим доступа: http: //php. su/.

4 Э. Гутман. Профессиональное программирование PHP5: Санкт-Петербург-Москва 2006.

5 Дэйв Ши, Молли Е. Хольцшлаг. Философия CSS-дизайна: Москва «NT Press»", 2005. — 313 с.

Приложение. Листинг программы

Код состоит из html кода, CSS файлов, и php файлов.

Файл index. php:

< ?php

include («blocks/dbconnect. php»);

?>

< !DOCTYPE html PUBLIC «-//W3C//DTD XHTML 1.0 Transitional//EN» «http: //www. w3. org/TR/xhtml1/DTD/xhtml1-transitional. dtd">

< html xmlns="http: //www. w3. org/1999/xhtml">

< head>

< link rel="icon" href="images/favicon. ico" type="image/x-icon">

< title>BMW Catalog< /title>

< link href="style. css" rel="stylesheet" type="text/css" />

< link href="navi. css" rel="stylesheet" type="text/css" />

< meta http-equiv="Content-Type" content="text/html; charset=utf-8″ />

< /head>

< body>

< div id="container">

< div id="top">

< ?php

include («blocks/top. php»);

include («blocks/navigation. php»);

echo «< div class='clear' id='bottom'> «;

$result = mysql_query («SELECT * FROM series»);

$myrow = mysql_fetch_array ($result);

do

{

printf («< div id='viewindexCar'> <a href='serie. php? ser=$myrow[ser]'> < img src=%s title='$myrow[title]'> < /a> < /div> %s < br><br><br><br> «,$myrow['image'],$myrow['description']); }while ($myrow = mysql_fetch_array ($result));

echo «< /div>»;

include («blocks/footer. php»);

?>

< /div>

< /div>

< /body>

< /html>

Файл serie. php (для отображения серий автомобилей)

< ?php

if (isset ($_GET[ser]))

{

$seria=$_GET[ser];

}

include («blocks/dbconnect. php»);

$result = mysql_query («SELECT title FROM series WHERE ser='$seria'»);

$myrow = mysql_fetch_array ($result);

?>

< !DOCTYPE html PUBLIC «-//W3C//DTD XHTML 1.0 Transitional//EN» «http: //www. w3. org/TR/xhtml1/DTD/xhtml1-transitional. dtd">

< html xmlns="http: //www. w3. org/1999/xhtml">

< head>

< link rel="icon" href="images/favicon. ico" type="image/x-icon">

< title> < ?php echo $myrow['title']?> </title>

< link href="style. css" rel="stylesheet" type="text/css" />

< link href="navi. css" rel="stylesheet" type="text/css" />

< meta http-equiv="Content-Type" content="text/html; charset=utf-8″ />

< /head>

< body>

< div id="container">

< div id="top">

< ?php

include («blocks/top. php»);

include («blocks/navigation. php»);

echo «< div class='clear' id='bottom'> «;

$result = mysql_query («SELECT name, image FROM cars WHERE ser='$seria'»);

$myrow = mysql_fetch_array ($result);

do

{

printf («< div id='viewCar'> <a href='car. php? name=$myrow[name]'>%s < br> < img src=%s> < /a> < /div> «,$myrow['name'],$myrow['image']);

}while ($myrow = mysql_fetch_array ($result));

echo «< /div>»;

include («blocks/footer. php»);

?>

< /div>

< /div>

< /body>

< /html>

Файл car. php (для просмотра информации об автомобиле)

< ?php

if (isset ($_GET['name'])){

$name = $_GET['name'];

}

include («blocks/dbconnect. php»);

?>

< !DOCTYPE html PUBLIC «-//W3C//DTD XHTML 1.0 Transitional//EN» «http: //www. w3. org/TR/xhtml1/DTD/xhtml1-transitional. dtd">

< html xmlns="http: //www. w3. org/1999/xhtml">

< head>

< link rel="icon" href="images/favicon. ico" type="image/x-icon">

< title> < ?php echo $name ?> </title>

< link href="style. css" rel="stylesheet" type="text/css" />

< link href="navi. css" rel="stylesheet" type="text/css" />

< meta http-equiv="Content-Type" content="text/html; charset=utf-8″ />

< /head>

< body>

< div id="container">

< div id="top">

< ?php

include («blocks/top. php»);

include («blocks/navigation. php»);

$result = mysql_query («SELECT * FROM cars WHERE name='$name'»,$db);

$myrow = mysql_fetch_array ($result);

echo $myrow['description'];

include («blocks/comments. php»);

include («blocks/footer. php»);

?>

< /div>

< /div>

< /body>

< /html>

Файл обработки комментариев.

< ?php

include («blocks/dbconnect. php»);

if (isset ($_POST['author'])){

$author = $_POST['author'];

}

if (isset ($_POST['text_area'])){

$text = $_POST['text_area'];

}

if (isset ($_POST['id'])){

$id = $_POST['id'];

}

if (isset ($_POST['subbutton'])){

$subbutton = $_POST['subbutton'];

}

if (isset ($_POST['carname'])){

$carname = $_POST['carname'];

}

if (isset ($subbutton))

{

if (isset ($author)) { trim ($author); }

else { $author=""; }

if (isset ($text)) { trim ($text); }

else { $text=""; }

if (empty ($author) or empty ($text))

{

exit («< p>Вы ввели не всю информацию, вернитесь назад и заполните все поля < br> < input name='back' type='button' value='Вернуться назад' onclick="javascript:history.back();">»);

}

$author = stripslashes ($author);

$text = stripslashes ($text);

$author = htmlspecialchars ($author);

$text = htmlspecialchars ($text);

if (($author≠"") and ($text≠""))

{

$date = date («Y-m-d»);

mysql_query («INSERT INTO comments (post, author, text, date) VALUES ('$id','$author','$text','$date')»,$db);

echo «< html><head>

< meta http-equiv='refresh' content='0; URL=car. php? name=$carname'>

< /head></html>";

exit ();

}

}

?>

Файл страницы панели администратора.

< ?php

include («lock. php»);

include («blocks/dbconnect. php»);

?>

< !DOCTYPE HTML PUBLIC «-//W3C//DTD HTML 4. 01 Transitional//EN» «http: //www. w3. org/TR/html4/loose. dtd">

< html>

< head>

< link rel="icon" href="images/favicon. ico" type="image/x-icon">

< meta http-equiv="Content-Type" content="text/html; charset=utf-8">

< title>Admin Panel< /title>

< link href="style. css" rel="stylesheet" type="text/css" />

< link href="navi. css" rel="stylesheet" type="text/css" />

< /head>

< body>

< div id="container">

< div id="top">

< ?php

include («blocks/top. php»);

$result = mysql_query («SELECT * FROM comments»,$db);

if (mysql_num_rows ($result) > 0)

{

echo «<p class='comment_title'> Все добавленные комментарии: < /p>»;

$myrow = mysql_fetch_array ($result);

do

{

printf («< div class='comment'> < p> Комментарий добавил (а): < strong>%s</strong> < br> Дата: < strong>%s</strong> < /p> <p class='comment_text'> %s <a href='deletecom. php? id=$myrow[id]'> (< span class='deletecom'> Удалить комментарий < /span>) < /a> < /p> < /div>»,$myrow['author'],$myrow['date'],$myrow['text']);

}

while ($myrow = mysql_fetch_array ($result));

}

include («blocks/footer. php»);

?>

< /div>

< /div>

< /body>

< /html>

Файл доступа к панели администратора:

< ?php

include («blocks/dbconnect. php»);

if (!isset ($_SERVER['PHP_AUTH_USER']))

{

Header («WWW-Authenticate: Basic realm="Admin Page»");

Header («HTTP/1.0 401 Unauthorized»);

exit ();

}

else {

if (!get_magic_quotes_gpc ()) {

$_SERVER['PHP_AUTH_USER'] = mysql_escape_string ($_SERVER['PHP_AUTH_USER']);

$_SERVER['PHP_AUTH_PW'] = mysql_escape_string ($_SERVER['PHP_AUTH_PW']);

}

$query = «SELECT pass FROM userlist WHERE user='». $_SERVER['PHP_AUTH_USER']. «'»;

$lst = @mysql_query ($query);

if (!$lst)

{

Header («WWW-Authenticate: Basic realm="Admin Page»");

Header («HTTP/1.0 401 Unauthorized»);

exit ();

}

if (mysql_num_rows ($lst) == 0)

{

Header («WWW-Authenticate: Basic realm="Admin Page»");

Header («HTTP/1.0 401 Unauthorized»);

exit ();

}

$pass = @mysql_fetch_array ($lst);

if ($_SERVER['PHP_AUTH_PW']≠ $pass['pass'])

{

Header («WWW-Authenticate: Basic realm="Admin Page»");

Header («HTTP/1.0 401 Unauthorized»);

exit ();

}

}

?>

Файл deletecom. php (для удаления комментариев)

< ?php

include («blocks/dbconnect. php»);

if (isset ($_GET['id'])){

$id = $_GET['id'];

}

$result = mysql_query («DELETE FROM comments WHERE id='$id'»);

if ($result)

{

echo «< html><head>

< meta http-equiv='refresh' content='0; URL=admin. php'>

< /head></html>";

exit ();

}

else

{

exit («< p>Произошла ошибка удаления. < br> < input name='back' type='button' value='Вернуться назад' onclick="javascript:history.back();">»);

}

?>

Блок comments. php (для отображения комментариев)

< ?php

$id = $myrow['id'];

$result2 = mysql_query («SELECT * FROM comments WHERE post='$id'»,$db);

if (mysql_num_rows ($result2) > 0)

{

echo «<p class='comment_title'> Коментарии к данной модели: < /p>»;

$myrow2 = mysql_fetch_array ($result2);

do

{

printf («< div class='comment'> < p> Комментарий добавил (а): < strong>%s</strong> < br> Дата: < strong>%s</strong> < /p> <p class='comment_text'> %s</p> < /div>»,$myrow2['author'],$myrow2['date'],$myrow2['text']);

}

while ($myrow2 = mysql_fetch_array ($result2));

}

?>

<p class='comment_title'> Добавить Ваш комментарий: </p>

< form action="comment. php" method="post" name="form_comm">

< p><label>Введите ваше имя: < input name="author" type="text" size="20″ maxlength="30″ /> </label></p>

< p><label>Введите комментарий: < br> < textarea name="text_area" cols="35″ rows="4"> </textarea></label></p>

< input name="id" type="hidden" value="< ?php echo $id ?>" />

< input name="carname" type="hidden" value="< ?php echo $name ?>" />

< p><label><input name="subbutton" type="submit" value="Комментировать" /> < /label></p>

< /form>

Блок navigation. php (для отображения навигации)

< div id="navigation">

< div id="invertedtabsline">  </div>

< div id="invertedtabs">

< ul>

< li style="margin-left: 1px"> <a href="serie. php? ser=1"><span>1-Series</span></a></li>

< li><a href="serie. php? ser=3"><span>3-Series</span></a></li>

< li><a href="serie. php? ser=5"><span>5-Series</span></a></li>

< li><a href="serie. php? ser=6"><span>6-Series</span></a></li>

< li><a href="serie. php? ser=7"><span>7-Series</span></a></li>

< li><a href="serie. php? ser=8"><span>8-Series</span></a></li>

< li><a href="serie. php? ser=X"><span>X-Series</span></a></li>

< li><a href="serie. php? ser=Z"><span>Z-Series</span></a></li>

< /ul>

< /div>

< br style="clear: left" />

< /div>

Основной CSS файл:

@charset «utf-8»;

body, td, th {

font-family: Trebuchet MS;

font-size: small;

background-color: #E2E2E0;

}

body {

margin-left: 0px;

margin-top: 0px;

margin-right: 0px;

margin-bottom: 0px;

background-color: #C0C2BF;

background-image: url (images/pat. jpg);

background-repeat: repeat;

}

#navigation {

padding-top: 10px;

padding-right: 0px;

padding-bottom: 10px;

padding-left: 0px;

background-color: #E2E2E0;

}

a: link {

color: #0;

text-decoration: none;

}

a: visited {

color: #0;

text-decoration: none;

}

a: hover {

color: #0;

text-decoration: underline;

}

a: active {

color: #CCCCCC;

text-decoration: none;

}

#container {

width: 785px;

padding: 10px;

margin-right: auto;

margin-left: auto;

background-color: #FFFFFF;

}

#content {

padding: 10px;

float: right;

width: 475px;

background-image: url (images/mainback. jpg);

background-repeat: repeat-x;

}

#sidebar {

padding: 10px;

float: left;

width: 270px;

background-image: url (images/mainback. jpg);

background-repeat: repeat-x;

}

#bottom {

padding: 10px;

background-color: #FFFFFF;

background-image: url (images/mainback. jpg);

background-repeat: repeat-x;

height: auto;

overflow: auto;

margin-bottom: 1px;

}

#footer {

padding-bottom: 10px;

height: 10px;

background-color: #FFFFFF;

background-image: url (images/topback. jpg);

background-repeat: repeat-x;

}

. clear {

clear: both;

background-color: #FFFFFF;

}

#top {

padding: 0px;

padding-top: 0px;

height: 0px;

}

#header {

height: 237px;

background-image: url (images/top. jpg);

padding-top: 10px;

padding-right: 10px;

padding-bottom: 0px;

padding-left: 10px;

}

. header2 {

color: Black;

}

#content img {

float: left;

margin: 5px;

padding: 5px;

background-color: #32 586 °F;

}

#viewCar{

float: left;

width: 220px;

height: 130px;

padding-bottom: 10px;

}

#viewindexCar{

float: left;

padding-right: 15px;

}

#texttitle

{

font-weight: bold;

text-decoration: underline;

}

#headername {

padding-bottom: 0px;

font-weight: bold;

font-size: 18px;

padding-left: 10px;

}

. comment_title{

font-size: 16px;

font-weight: bold;

color: #CC0000;

}

. comment_text{

font-size: 14px;

font-style: italic;

}

. comment{

border-bottom: 1px solid gray;

border-top: 1px solid gray;

margin: 15px;

}

. deletecom{

color: #FF0000;

}

. comred{

color: #FFFFFF;

text-align: right;

float: right;

font-size: 14px;

font-weight: bold;

}

Дополнительный CSS файл:

@charset «utf-8»;

/* CSS Document */

< style type="text/css">

/*yraaa. ru*/

#invertedtabs{

margin-left: 4px;

padding: 0;

width: 100%;

background: transparent;

voice-family: «„}“»;

voice-family: inherit;

padding-left: 5px;

}

#invertedtabs ul{

font: bold 12px Arial, Verdana, sans-serif;

margin: 0;

margin-bottom: 1em; /*margin between menu and rest of content*/

padding: 0;

list-style: none;

}

#invertedtabs li{

display: inline;

margin:0 2px 0 0;

padding: 0;

text-transform: none;

line-height: 1. 5em;

}

#invertedtabs a{

float: left;

color: white;

background: #0 url (media/color_tabs_left2. gif) no-repeat left bottom;

margin:0 2px 0 0;

padding:0 0 0 3px;

text-decoration: none;

letter-spacing: 1px;

}

#invertedtabs a span{

float: left;

display: block;

background: transparent url (media/color_tabs_right2. gif) no-repeat right bottom;

padding: 3px 9px 3px 6px;

}

#invertedtabs a span{

float: none;

}

#invertedtabs a: hover{

background-color: #a3a9a7;

}

#invertedtabs a: hover span{

background-color: #a3a9a7;

}

#invertedtabs #current a, #invertedtabs #current span{ /*currently selected tab*/

background-color: #32 586 °F;

}

#invertedtabsline{

clear: both;

padding: 0;

width: 100%;

height: 0px; /*Remove this to remove border between bar and tabs*/

background-color: #32 586 °F;

}

< /style>

ПоказатьСвернуть
Заполнить форму текущей работой