Разработка сайта

  • Вид работы:
    Дипломная (ВКР)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    1,25 Мб
  • Опубликовано:
    2014-10-22
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Разработка сайта

Введение


На сегодняшний день, очень большая часть человеческого общества, занимаясь своей повседневной работой и различной деятельностью, ставит задачу о том, как сделать их информацию (преложения\спрос) наиболее видимую для других, дабы укрепить и расширить свои позиции на рынке. Чтобы быть вне конкуренции люди отдают коллосальные средства на раскрутку и рекламу своих продуктов. По этому с давних времен придумано очень много методов размещения информации на просматриваемые площадки (телевидение, доски объявлений, рекламные щиты, реклама на радио, реклама в Интернете).

Разработкой Одной из представленных площадок - Доски объявлений в Интернете - и посвящена данная работа.

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

Целью данной бакалаврской работы является разработка именно такого Web-сайта: то есть сайта, на котором можно было бы найти информацию относительно любого спроса\предложения, начиная от продажи ручек parker, заканчивая компьютерами, автомобилями.

 


1. Краткие сведения о доске объявлений


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

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

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

 


2. Выбор средств разработки


В качестве основного средства разработки Web-сайта применялся язык разметки гипертекста HTML. Все остальные средства носят лишь вспомогательный характер и предназначены или для оптимизации загрузки данных (язык PHP, СУБД MySQL, Web-сервер Apache), или для визуального улучшения сайта (язык JavaScript).

Для упрощения процесса установки и интеграции программных частей использовался комплекс «Денвер-2», включающий в себя сервер MySQL и Web-сервер Apache с поддержкой PHP. Преимущество комплекса «Денвер-2» в том, он не требуют настройки, а базовые возможности доступны сразу же после установки.

2.1 Язык HTML


Термин HTML (Hyper Text Markup Language) означает «язык маркировки гипертекстов». HTML - своеобразная противоположность сложным языкам программирования, известным только специалистам. [2]

Первая версия HTML была разработана в 1989 году Тимом Бенерс-Ли для популярного в прошлом браузера Mosaic. Но в то время ни для языка, ни для браузера не нашлось достойного применения. В 1993 году появился HTML+, и эта версия также осталась практически незамеченной. Начало широкого использования гипертекста дала версия 2.0, которая появилась в июне 1994 года. Это был год роста популярности WWW по всему миру. Элементы, включенные в версию 2, в большинстве своем используются по сей день.

В версии 3.0 HTML, которая появилась год спустя, была реализована возможность прорисовки математических символов (знаков интеграла, бесконечности, дроби, скобок и т.д.) при помощи элементов языка. Под эту версию был разработан браузер Arena. Но этот проект оказался тупиковым и не получил дальнейшего распространения.

В 1996 году появился HTML 3.2. Это было новаторское решение, были введены фреймы, которые стали теперь весьма популярны у разработчиков WEB-страниц. Даже сейчас на основе этой спецификации можно реализовать интересные дизайнерские решения. Практически все современные браузеры поддерживают версию 3.2, поэтому авторы Web-страниц уверенны в работоспособности всех элементов.

Наряду с официальными спецификациями языка, которые разрабатывались организацией W3C (W3 Консорциум), компании-производители браузеров создавали собственные элементы (расширения). Впоследствии, некоторые из этих элементов, после получения всеобщего признания включились в спецификацию следующих версий языка. Новаторское решение - фреймы - не были включены в спецификацию 3.2. Но браузеры поддерживали фреймы и многие книги, посвященные HTML, содержали описание фреймов без упоминания о том, что это нестандартные элементы. Впоследствии фреймы стали стандартом де-факто. В версии 4 они уже были включены на полном основании.

И наоборот, элементы APPLET и SCRIPT, необходимые для расширения HTML другими программными кодами версии 3.2, не сыграли той роли, которую были призваны сыграть. Это объясняется тем, что браузеры различных версий по-разному интерпретировали программы на разных языках Java, JavaScript, Visual Basic (VBScript). В результате не удалось получить достаточно надежный работающий код, и данные языки использовались любителями HTML в основном для экспериментов.

Официальная спецификация HTML 4 (Dynamic HTML) появилась в 1997 году. В это время уже было очевидно, что дальнейшее развитие гипертекста будет осуществляться за счет скрипт-программирования. Это оказалось немногим более эффективным, чем вводить в язык все новые элементы. Появившиеся в то время браузеры (Netscape Navigator 4, Microsoft Internet Explorer 4 и др.) уже достаточно надежно интерпретировали программный код (был установлен определенный уровень стандартизации). Однако проблемы у разработчиков еще остались. В качестве примера можно отметить, что многие скрипты начинаются с определения версии браузера, чтобы потом использовать тот или иной фрагмент кода. Очевидно, что на программиста ложится обязанность тестирования страниц на всех популярных в настоящие время браузерах.

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

2.2 Каскадные таблицы стилей


Каскадные таблицы стилей или CSS (от английского Cascading Style Sheets) - это довольно позднее нововведение. Если сам HTML появился в 1989 году, то таблицы стилей - только в 1997. Мало того, таблицы стилей не считаются частью HTML. Связано это с тем, что WWW была создана учеными как средство для обмена текстовыми документами, а HTML был языком, с помощью которого создавали эти документы. Для ученых главным было содержимое документа, а не его оформление. Поэтому первые версии HTML не включали даже средств для размещения на Web-страницах графических изображений, не то, что для сложного форматирования текста. Но время шло, и в Интернет пришел обыватель, тотчас потребовавший от Web-дизайнеров «сделать ему красиво». А Web-дизайнеры, в свою очередь, потребовали от разработчиков стандарта HTML средств, облегчающих им работу. [3]

Так и возникли каскадные таблицы стилей. В настоящее время приняты спецификации CSS1 и CSS2, идет работа над CSS3. Однако современные Web-обозреватели, да и то самые последние их версии, полностью поддерживают только CSS1 и, частично, CSS2.

Каскадные таблицы стилей или просто таблицы стилей (CSS - Cascading Style Sheets) - это набор правил, описывающих форматирование разных фрагментов HTML-кода и хранящихся отдельно от него. Одно такое правило, отображающее форматирование какого-то одного фрагмента или однотипной группы фрагментов кода, называется стилем. Таблицы стилей описываются на особом языке CSS и хранятся в особых файлах с расширением сss, хотя могут быть внедрены в саму Web-страницу.

Всего стандарт CSS определяет три способа задания стиля для элемента страницы. Перечислим их и дадим краткое описание каждому способу.

1.      Внешняя (или привязанная) таблица стилей. Стили сохраняются в отдельном файле с расширением css и привязываются к Web-странице с помощью особого тэга <LINK>.

2.      Внутренняя (или внедренная) таблица стилей. Таблица стилей в этом случае имеет тот же самый формат, что и внешняя, но располагается в секции заголовка той же Web-страницы и помещается внутрь специального тэга <STYLE>.

.        Внутренние (также встроенные или внедренные) стили. Определение стиля помещается прямо в нужный тэг, для чего используется специальный атрибут STYLE.

Правило каскадности: если какой-то стиль будет определен одновременно два или три раза, то к определению стиля, сделанному во внешней таблице, добавляет определение, сделанное во внутренней таблице. А если определение затрагивает один и тот же атрибут, берется определение, сделанное во внутренней таблице.

2.3 Язык JavaScript

- это новый язык программирования, используемый в составе страниц HTML для увеличения функциональности и возможностей взаимодействия с пользователями. Он был разработан фирмой Netscape в сотрудничестве с Sun Microsystems на базе языка Sun's Java. С помощью JavaScript на Web-странице можно сделать то, что невозможно сделать стандартными тэгами HTML. Скрипты выполняются в результате наступления каких-либо событий, инициированных действиями пользователя. Создание Web-документов, включающих программы на JavaScript, требует наличие текстового редактора и подходящего браузера. Некоторые браузеры включают в себе встроенные редакторы, поэтому необходимость во внешнем редакторе отпадает. [4]

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

2.4 Web-сервер Apache

HTTP-сервер (по-русски обычно произносят «Апа́ч») - это веб-сервер с открытым исходным кодом. С апреля 1996 это самый популярный HTTP-сервер в Интернете; в апреле 2007 года он работал на 58% всех Web-серверов. [5]

Основными достоинствами Apache считаются надёжность и гибкость конфигурации. Он позволяет подключать внешние модули для предоставления данных, использовать СУБД для аутентификации пользователей, модифицировать сообщения об ошибках и т.д.

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

Сервер был написан в начале 1995 года и считается, что его имя восходит к шуточному названию «a patchy» (англ. «заплаточный»), так как он устранял ошибки популярного тогда сервера Всемирной паутины NCSA HTTPd 1.3. В дальнейшем, с версии 2.х, сервер был переписан заново и теперь не содержит кода NCSA, но имя осталось. На данный момент разработка ведется в ветке 2.2, а в версиях 1.3 и 2.0 производятся лишь исправления ошибок безопасности.

Web-сервер Apache разрабатывается и поддерживается открытым сообществом разработчиков под эгидой Apache Software Foundation и включён во многие программные продукты, среди которых СУБД Oracle и IBM WebSphere.

2.5 Язык PHP

сайт программный таблица

PHP, что означает «Препроцессор Гипертекста», является широко используемым языком сценариев общего назначения с открытым исходным кодом. PHP создавался специально для ведения Web-разработок и может использоваться непосредственно в HTML-коде. Синтаксис языка берет начало из C, Java и Perl и является легким для изучения. Преимущественным назначением PHP является предоставление Web-разработчикам возможности быстрого создания динамически генерируемых Web-страниц, однако, область применения PHP не ограничивается только этим. [5]

PHP/FI

Истоки PHP лежат в старом продукте, имевшем название PHP/FI. Последний был создан Расмусом Лердорфом в 1995 году и представлял собой набор Perl-скриптов для ведения статистики посещений его резюме. Этот набор скриптов был назван «Personal Homepages Tools» («Инструменты для персональных домашних страниц»). Очень скоро потребовалась большая функциональность, и Расмус пишет новую, намного более обширную версию на C, работающую с базами данных и позволяющую пользователям разрабатывать простейшие Web-приложения. Расмус решил выложить исходный код PHP/FI на всеобщее обозрение, исправление ошибок и дополнение./FI (Personal Home Page / Forms Interpreter - Персональная Домашняя страница / Интерпретатор Форм) включал в себя базовую функциональность сегодняшнего PHP. Он имел переменные в стиле Perl, автоматическую интерпретацию форм и возможность встраиваться в html-код. Собственно синтаксис языка имел много общего с Perl, хотя и был намного проще и ограниченнее.

В 1997 выходит PHP/FI 2.0, вторая версия C-имплементации обозначила группу пользователей: несколько тысяч людей по всему миру, с примерно 50 000 доменами, что составляло около 1% всего числа доменов Интернета. Несмотря на то, что разработкой занималось уже несколько людей, PHP/FI 2.0 все еще оставался крупным проектом одного человека.

Официально PHP/FI 2.0 вышел только в ноябре 1997 года, после проведения большей части своей жизни в бета-версиях. Вскоре после выхода его заменили альфа-версии PHP 3.0.

PHP 3

PHP 3.0 была первой версией, напоминающей PHP, каким мы знаем его сегодня. В 1997 году Энди Гутманс (Andi Gutmans) и Зив Сураски (Zeev Suraski) переписали код с начала: разработчики сочли PHP/FI 2.0 не пригодным для разработки приложения электронной коммерции, над которым они работали для проекта Университета.

Одной из сильнейших сторон PHP 3.0 была возможность расширения ядра. В последствии интерфейс написания расширений привлек к PHP множество сторонних разработчиков, работающих над своими модулями, что дало PHP возможность работать с огромным количество баз данных, протоколов, поддерживать большое число API. Фактически, это и был главный ключ к успеху, но стоит добавить, что немаловажным шагом оказалась разработка нового, намного более мощного и полного синтаксиса с поддержкой ООП.

Абсолютно новый язык программирования получил новое имя. Разработчики отказались от дополнения о персональном использовании, которое имелось в аббревиатуре PHP/FI. Язык был назван просто «PHP» - аббревиатура, содержащая рекурсивный акроним: «PHP: Hypertext Preprocessor» (PHP: Препроцессор Гипертекста).

К концу 1998, PHP использовался десятками тысяч пользователей. Сотни тысяч Web-сайтов сообщали о том, что они работают с использованием языка. В то время PHP 3.0 был установлен приблизительно на 10% серверах Интернета.3.0 был официально выпущен в июне 1998 года после 9 месяцев публичного тестирования.

PHP 4

К зиме 1998 года, практически сразу после официального выхода PHP 3.0, Энди Гутманс и Зив Сураски начали переработку ядра PHP. В задачи входило увеличение производительности сложных приложений и улучшение модульности базиса кода PHP. Расширения дали PHP 3.0 возможность успешно работать с набором баз данных и поддерживать большое количество различных API и протоколов, но PHP 3.0 не имел качественной поддержки модулей и приложения работали неэффективно.

Новый движок, названный «Zend Engine» (от имен создателей: Zeev и Andi), успешно справлялся с поставленными задачами и впервые был представлен в середине 1999 года. PHP 4.0, основанный на этом движке и принесший с собой набор дополнительных функций, официально вышел в мае 2000 года, почти через два года после выхода своего предшественника PHP 3.0. В дополнение к улучшению производительности, PHP 4.0 имел еще несколько ключевых нововведений, таких как поддержка сессий, буферизация вывода, более безопасные способы обработки вводимой пользователем информации и несколько новых языковых конструкций.

Сегодня PHP используется сотнями тысяч разработчиков. Несколько миллионов сайтов сообщают о работе с PHP, что составляет более 20% доменов Интернета.

Группа разработчиков PHP состоит из множества людей, работающих над ядром, и расширениями PHP, и смежными проектами, такими, как PEAR или документация языка.

PHP 5

Пятая версия PHP была выпущена разработчиками 13 июля 2004 года. Изменения включают обновление ядра Zend (Zend Engine 2), что существенно увеличило эффективность интерпретатора. Введена поддержка языка разметки XML. Полностью переработаны функции ООП, которые стали во многом схожи с моделью, используемой в Java. В частности, введён деструктор, открытые, закрытые и защищённые члены и методы, окончательные члены и методы, интерфейсы и клонирование объектов. Нововведения, однако, были сделаны с расчётом сохранить наибольшую совместимость с кодом на предыдущих версиях языка. На данный момент самыми стабильными и часто используемыми являются именно версии 5.xx, даже несмотря на то, что уже имеется dev-версия PHP 6.

PHP 6

Шестая версия PHP находится в стадии разработки с октября 2006 года. В ней уже сделано множество нововведений, как, например, исключение из ядра POSIX-регулярных выражений и «длинных» суперглобальных массивов, удаление директив safe_mode, PHP_magic_quotes и register_globals из конфигурационного файла PHP.ini. Также много внимания уделено поддержке Юникода.

2.6 Система управления базами данных MySQL

- это система управления базами данных. База данных представляет собой структурированную совокупность данных. Эти данные могут быть любыми. Для записи, выборки и обработки данных, хранящихся в компьютерной базе данных, необходима система управления БД, каковой и является MySQL. Поскольку компьютеры замечательно справляются с обработкой больших объемов данных, управление базами данных играет центральную роль в вычислениях. Реализовано такое управление может быть по-разному - как в виде отдельных утилит, так и в виде кода, входящего в состав других приложений.- это система управления реляционными базами данных. В реляционной базе данных данные хранятся в отдельных таблицах, благодаря чему достигается выигрыш в скорости и гибкости. Таблицы связываются между собой при помощи отношений, благодаря чему обеспечивается возможность объединять при выполнении запроса данные из нескольких таблиц. SQL как часть системы MySQL можно охарактеризовать как язык структурированных запросов плюс наиболее распространенный стандартный язык, используемый для доступа к базам данных.

Программное обеспечение (ПО) MySQL - это ПО с открытым кодом. ПО с открытым кодом означает, что применять и модифицировать его может любой желающий. Такое ПО можно получать по Internet и использовать бесплатно. При этом каждый пользователь может изучить исходный код и изменить его в соответствии со своими потребностями.является очень быстрым, надежным и легким в использовании. Если требуются именно эти качества, лучше работать с данным сервером. MySQL обладает также рядом удобных возможностей, разработанных в тесном контакте с пользователями.является системой клиент-сервер, которая содержит многопоточный SQL-сервер, обеспечивающий поддержку различных вычислительных машин баз данных, а также несколько различных клиентских программ и библиотек, средства администрирования и широкий спектр программных интерфейсов (API).

3. Структура сайта

 

.1 Категории и подкатегории


Данный Web-сайт состоит из категорий и подкатегорий. Их глубина не ограниченна. Название категории соответствует ее фактическому применение. Например, категория «Автомобили» сугубо для размещения объявлений по теме покупка и продажа автомобилей.

 

.2 Страницы добавления


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

 

.3 Модуль администрирования


Для управления информацией на сайте существует администраторский модуль, в котором присутствуют средства для редактирования всей структуры сайта. Просмотр, редакция, удаление, добавление объявлений и разделов.

Основное отличие данного Web-сайта от аналогов заключается в приятном дизайне и удобной структуре для добавления объявлений.

4. Дизайн


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

4.1 Интерфейс


Шаблон сайта (то есть часть, общая для всех страниц) содержит шапку с накнопками управления для добавления и поиска объявления. Основное же пространство занимает либо список категорий, либо список объявлений, либо само объявление. На рисунке 4.1. приведен вшенший вид главной страницы сайта, на основе которой соответственно построены и все остальные.

Рис. 4.1 Внешний вид доски объявлений

4.2 Графика

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

Единственными яркими пятнами на страницах являются картинки, которые соответствуют категориям для более удобного обращения с доской объявлений. Это позволяет пользователю всецело сосредоточиться на информативной части сайта, а на картинки обращать внимание лишь в том случае, когда они действительно уместны. С этой же целью баннеры сделаны в приглушенных, неярких тонах. Основным средством для создания баннеров послужили редакторы растровой графики Adobe Photoshop CS2.

Цветовые особенности реализуются посредством применения CSS.

Файл images/style.css задает общие для всех страниц свойства, а именно: цвет фона и цвета ссылок (непосещенных, активных, посещенных).

BODY {margin:10; FONT-SIZE: 14px; COLOR: #444444; FONT-FAMILY: 'Courier New', Tahoma, Arial; BACKGROUND-COLOR: #ffffff}{FONT-SIZE: 14px; COLOR: #444444; FONT-FAMILY: 'Courier New', Tahoma, Arial}

{color: #E33C00; text-decoration: none;}

                            {COLOR: #0066CC; TEXT-DECORATION: none}:hover           {COLOR: #0066CC; TEXT-DECORATION: none}:visited          {COLOR: #0066CC}

_link {text-decoration:none; color: #999999}

{width: 316;}

w50 {width: 40%;}

{width: 1px;        height: 14px;: #666666;size: 12px;: hidden;color: #EBEBEB;left: 5px;

}

, textarea, select {COLOR: #ffffff;BOTTOM: #969696 1px solid;LEFT: #969696 1px solid;RIGHT: #969696 1px solid;TOP: #969696 1px solid;: #333333;SIZE: 8pt; FONT-FAMILY: Verdana, Arial;

}

_radio {COLOR: #F4F4F4;: 0;

}

{COLOR: #FFFFFF;: 0;

}

{color:#666666; FONT-WEIGHT: bold}

:hover {text-decoration:none;}

{FONT-SIZE: 8pt; color: #999999;}

{BORDER-BOTTOM: #E33C00 1px solid;      BORDER-LEFT: #E33C00 1px solid; BORDER-RIGHT: #E33C00 1px solid; BORDER-TOP: #E33C00 1px solid;}

{text-decoration:none; font-weight: bold;}

{font-family: Georgia, «Times New Roman», Times, serif; font-size:22px; font-weight:bold; color:#FFFFFF}

_item {margin: 5;}

_top_orange {: 100%;align: top;: url (px1.gif);position: top;repeat: repeat-x;color: #FF9900;: dashed #EEEEEE;

}

_news {align: top;color: #EEEEEE;: #EEEEEE;: none;

}

_top_red {: 100%;align: top;: url (px2.jpg);position: top;repeat: repeat-x;color: #FF0000;: dotted #EEEEEE;}

{color: #0066CC; text-decoration: none;}_txt {color:#939393; text-decoration:none; font-family:tahoma; font-size:10px; text-transform:uppercase; font-weight:bold}{font-size:11px}{text-decoration:underline}_bold {color: #0066CC; text-decoration: none; font-weight:bold}{font-size:10px}_orange {color:#F7941D; text-decoration:none; font-size:11px; font-weight:bold}{font-family:tahoma; font-size:10px; color:#9B9B9B; text-decoration:none}{color: red; font-size:16px; font-weight:bold}{color: #FFFFFF; text-decoration:none}:date {text-decoration: none; color:#FFFFFF}

                   {FONT: Trebuchet, Tahoma; COLOR: #FFFFFF}               {FONT: Trebuchet, Tahoma; COLOR: #000000}            {FONT: Trebuchet, Tahoma; COLOR: #999999}_blue    {FONT: Trebuchet, Tahoma; COLOR: #336699}_green      {FONT: Trebuchet, Tahoma; COLOR: #006633}_orange {FONT: Trebuchet, Tahoma; COLOR: #FF9900}            {FONT: Trebuchet, Tahoma; COLOR: #FF0000}_red         {FONT: Trebuchet, Tahoma; COLOR: #B71E2D}

_gray          {background-color:#E6E6E6; padding-bottom: 3px; padding-top: 3px; padding-left: 9px; padding-right: 9px}_dark_red        {background-color:#B71E2D; padding-bottom: 3px; padding-top: 3px; padding-left: 9px; padding-right: 9px}_dark_orange         {background-color:#FF9900; padding-bottom: 3px; padding-top: 3px; padding-left: 9px; padding-right: 9px}_dark_blue        {background-color:#336699; padding-bottom: 3px; padding-top: 3px; padding-left: 9px; padding-right: 9px}_dark_green         {background-color:#006633; padding-bottom: 3px; padding-top: 3px; padding-left: 9px; padding-right: 9px}

                  {FONT-WEIGHT: bold}        {FONT: 22px 'Courier New'; FONT-WEIGHT: bold}                   {TEXT-TRANSFORM: uppercase}                  {text-decoration:none}           {COLOR: #E6E6E6; HEIGHT: 1px}                {FONT-SIZE: 14px; COLOR: #888888}           {BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px}

{FONT-SIZE: 16}

{FONT-SIZE: 14}

{FONT-SIZE: 12}

                            {MARGIN-TOP: 5px; MARGIN-BOTTOM: 5px; FONT-SIZE: 16px}A               {MARGIN-TOP: 5px; MARGIN-BOTTOM: 5px; FONT-SIZE: 16px}A:visited {MARGIN-TOP: 5px; MARGIN-BOTTOM: 5px; FONT-SIZE: 16px}                        {MARGIN-TOP: 5px; MARGIN-BOTTOM: 5px; FONT-SIZE: 14px}A                 {MARGIN-TOP: 5px; MARGIN-BOTTOM: 5px; FONT-SIZE: 14px}A:visited {MARGIN-TOP: 5px; MARGIN-BOTTOM: 5px; FONT-SIZE: 14px}                    {MARGIN-TOP: 5px; MARGIN-BOTTOM: 3px; FONT-SIZE: 12px}A                 {MARGIN-TOP: 5px; MARGIN-BOTTOM: 3px; FONT-SIZE: 12px}A:visited {MARGIN-TOP: 5px; MARGIN-BOTTOM: 3px; FONT-SIZE: 12px}

                   {DISPLAY: none}

4.3 Браузерная совместимость


На сегодняшний день наиболее распространенным браузером является Microsoft Internet Explorer (83%). Однако в последнее время всё большее распространение стали получать браузеры Opera и Mozilla Firefox. Эти браузеры также поддерживают выполнение Java-скриптов и каскадные таблицы стилей. Тестирование данного Web-сайта производилось во всех перечисленных браузерах, и во всех он работал без ошибоки и вид страниц не различался. Таким образом, для просмотра сайта можно использовать любой из них, по вкусу пользователя.

 

 


5. Конструкторский раздел


При создании данного Web-сайта, помимо языка разметки гипертекста HTML, использованы каскадные таблицы стилей, Web-сервер Apache, язык PHP и язык JavaScript.

Рассмотрим механизм функционирования Web-сайта более подробно.

5.1 Шаблон сайта

 

Шаблон сайта состоит из двух файлов: itop.inc.php и foot.inc.php, - а в центральную часть динамически подгружается информация из скриптов, в зависимости от того на какой странице пользователь.

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

Подгрузка шаблонов выполняется в нужном файле (к примеру sboard.php) оператором «include», которому в качестве параметров передаются переменные имена файлов.

Картинки для категорий и подкатегорий хранятся в виде отдельных файлов в графическом формате.

Так же в сайте испоьлзовано динамическое изменение заголовка страницы, что бы поисковые системы могли лучше распознать, где какой раздел, и так же сайт имеет удобные для людей URL. Тоесть вместо #"869286.files/image002.gif">

Рис. 5.2.1 кнопка для добавления объявления

Рис. 5.2.2 пуская форма для добавления объявления

Рис. 5.2.3 заполненная форма для добавления объявления

Рис. 5.2.4 страница, отображённая после того как пользователь добавит объявление

Структура таблицы «board», базы данных данного сайта, хранит в себе объявления и имеет следующую структуру:

- уникальный номер объявления_category - уникальный номер категории, берётся из таблицы board_cat- автор объявления- заголовок- email адрес посетителя, который оставил объявление- адресс посетителя- телефон- сообщение, указанное в объявлении- количество просмотров- тип_mess - поле, которое показывает устарело объявление или нет_top - поле, при определённом значении, которого, объявление будет в топе - выводится не смотря на дату добавления.- дата добавления_delete - дата удаления_edit - дата последнего редактирования

А структура таблицы «board_cat» слудующая:

- уникальный номер категории_category - здесь указывается 0 если категория является корневой или id из board_cat что бы указать что это подкатегория категории с уникальным номером id_cat - название категории- описание категории- картинка для категории

5.3 Раздел отображаемый при выборе какой-либо категории

Рис. 5.3.1. список категорий на сайте

Рис. 5.3.2. список объявлений в категории

5.4 Раздел «Администрирование»

Для того, что бы попасть в раздел администирования, нужно набраться в адресе #"869286.files/image008.gif">

Появится форма ввода пароля:

Рис. 5.4.1 форма ввода пароля

Если пароль был введён правильно, то будет открыта система администрирования, на главной странице, которой, будут отображены новые объявления, которые ещё не были просмотрены администратором:

Рис. 5.4.2 новые объявления

Рис. 5.4.3 редактирование объявления в системе администрирования

Рис. 5.4.5 список категорий в системе администрирования

Рис. 5.4.6 список объявлений в категории, отображаемый в системе администрирования

Рис. 5.4.7 изменение категории в системе администрирования

Рис. 5.4.8 личные данные администратора в системе администрирования

Рис. 5.4.9 изменение личных данных администратора в системе администрирования

Заключение

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

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

Разработка среды велась «с нуля», и на этапе проектирования было учтено множество пожеланий со стороны заказчика. Это позволило создать проект, максимально удовлетворяющий потребностям заказчика.

В результате проделанной работы был получен Web-сайт, полностью пригодный для размещения в глобальной сети Internet.

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

 


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

 

1    Macromedia Dreamweaver MX [Электронный ресурс]: учебное пособие / Дронов В. - Электрон. дан. и прогр. - [Россия], [2004-2007]. - Режим доступа: http://www.vgi.volsu.ru

2       JavaScript [Electronic resource]: Einfuehrung, Programmierung und Referenz / Stefan Koch. - Electronic data and program. - [German]: dpunkt.verlag, 1996-1997. - Mode of access: http://rummelplatz.uni-mannheim.de/~skoch/js/

3       Википедия [Электронный ресурс]: свободная энциклопедия. - Электрон. дан. - [Россия], [1999-2000]. - Режим доступа: http://ru.wikipedia.org

4       MySQL. Одобрено лучшими российскими программистами [Электронный ресурс]: Справочное руководство по MySQL. - Электрон. дан. - [Россия], [2001-2002]. - Режим доступа: http://www.mysql.ru

Приложение А

Фрагменты кода, отвечающие за дизайн web-сайта

require_once («mysql.php»);_once («func.php»);_once («admin/config.php»);

?>

<html>

<head>

<title>

<? if (isset($title)) echo $title; else echo «test1.ru»;?>

</title>

<meta http-equiv= «Content-Language» content= «ru»>

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

<meta content= «index, follow, all» name= «robots»>

<meta content= «5 days» name= «revisit-after»>

<meta name= «keywords» content="<? if (isset($keywords)) echo $keywords; else echo «test1.ru»;?>">

<meta name= «description» content="<? if (isset($description)) echo $description; else echo «test1.ru»;?>">

<LINK REL=STYLESHEET TYPE= «text/css» HREF="<? echo «http:// »; echo $_SERVER ['HTTP_HOST']; echo»/»;?>images/style.css»>

</head>

<body onLoad= «loadclock()»>

<table width= «100%» align= «center» border= «0» cellpadding= «0» cellspacing= «10» bgcolor= "#FFFFFF»>

<tr>

<td width= «75%» valign= «top»>

<?(date(H) >= «5» && date(H) < «12») $now = «Доброе утро»;(date(H) >= «12» && date(H) < «19») $now = «Добрый день»;(date(H) >= «19» && date(H) <= «23») $now = «Добрый вечер»;(date(H) >= «0» && date(H) < «5») $now = «Доброй ночи»;

(isset ($_ENV['USERNAME']) &&! empty ($_ENV['USERNAME'])) echo «<font size=\» - 1\»>

?><font size=» - 1»>

<SCRIPT language=JavaScript>

makeArray() {args = makeArray.arguments;(var i = 0; i < args.length; i++) {[i] = args[i];

}.length = args.length;

}

fixDate(date) {base = new Date(0);skew = base.getTime();(skew > 0).setTime (date.getTime() - skew);

}

getString(date) {months = new makeArray («Января», «Февраля», «Марта»,

«Апреля», «Мая», «Июня»,

«Июля», «Августа», «Сентября»,

«Октября», «Ноября», «Декабря»);

date.getDate()+ " " + months [date.getMonth()];

}

cur = new Date();(cur);str = getString(cur);.write(str);

</SCRIPT>, </font>

<script>

<!-show2 () {Digital=new Date()hours=Digital.getHours()minutes=Digital.getMinutes()seconds=Digital.getSeconds()dn=»»(hours>24) {=»»=hours-24

}(hours==0)=24(minutes<=9)= «0»+minutes(seconds<=9)= «0»+secondsctime="<font face='Verdana' size='-2'> «+hours+»: «+minutes+»: «+seconds+» «+dn+»</font>»(! document.all).write(ctime).innerHTML=ctime

}loadclock() {(document.all)(«show2 ()», 1000)

}(! document.all)()

// ->

</script>

<span id=tick2></span>

</td>

<td width= «25%» align= «right» valign= «top»>&nbsp; <a href= «Добавить в избранное» onClick=«window.external.addFavorite ('<? echo «http:// ».$_SERVER ['HTTP_HOST'];?>/', 'test1.ru'); return false;» title= «Добавить в избранное»>В избранное</a>&nbsp; <a href=»<? echo «http:// ».$_SERVER ['HTTP_HOST'];?>/» title= «На главную»>На главную</a></td>

</tr>

</table>

<table width= «100%» align= «center» bgcolor= "#F4F4F4» border= «0» cellpadding= «0» cellspacing= «10»>

<tr>

<td>

<center><strong>

</td>

<td><div align= «right»>

<form method=post action= «http:// <? echo $_SERVER ['HTTP_HOST']?>/search/»>

<span>

<input name=search_in value=title type=hidden>

<input type=submit value=Искать>

</form>

</div></td>

</tr>

</table>

<TABLE WIDTH= «100%» align= «center» BORDER= «0»>

<TR>

<TD valign= «top»><table width= «100%» border= «0» align= «center» cellpadding= «0» cellspacing= «20»>

<tr>

<td width= «25%» valign= «top» style= «padding-bottom:5px; padding-left:5px; padding-right:5px»>

</td>

</tr>

</table>

</td>

</tr>

</table>

</TD>

</TR>

</TABLE>

<table width= «100%»>

<TR>

<TD valign= «top»>

<div align= «center»><? echo «<span>

</TR>

</TABLE>

</BODY>

</HTML>

Файл sboard

<?(«mysql.php»);(«func.php»);(«admin/config.php»);

$time_now = time ();

$a = mysql_query («SELECT * from board WHERE».$time_now.» > ((time_delete * 86400) + time) ORDER by id»);

$b = mysql_num_rows($a);($qwe = mysql_fetch_array($a))

{

$data_udaleniya_iz_bazy = $qwe ['time_delete'] * 86400 + $qwe['time'];(time () > $data_udaleniya_iz_bazy)

{

$del_sus = mysql_query («DELETE from board LIMIT 1»);

}{}

}(! empty ($_GET['id_cat']) && intval ($_GET['id_cat']) > 0 &&! empty ($_GET['id_mess']) && intval ($_GET['id_mess']) > 0)

{

$hits = mysql_query («UPDATE board SET hits = hits + 1 WHERE id=».$_GET ['id_mess']. "»);

$query = mysql_query («SELECT A.id as board_id, A.*, B.*board as A, board_cat as BA.id =». $_GET ['id_mess'].»       B.id =». $_GET ['id_cat']. "»);(mysql_num_rows ($query) > 0)

{($message = mysql_fetch_array($query))

{

$message['title'] = str_replace («'», «&quot», $message['title']);

$message['title'] = str_replace («`», «&quot», $message['title']);

$title = $message['title'];

$keywords = $message['title'];

$description = $message ['name_cat'].» | Заголовок:».$message['title'];(«design/itop.inc.php»);

echo «<table border=1 bordercolor=#EEEEEE bgcolor=#FAFAFA cellpadding=5 cellspacing=2 align=center><tr valign=middle title='».$message['title']. «'><td align=center>»;»<table border=0><tr>»;«<td align=center><font>

$time_actual = (($message['time'] + $message ['time_delete'] * 86400) - time()) / 86400 + 1;«</tr></table><br>»;

«<strong>

»<table border=0><tr>»;

$date = date («d.m.y», $message['time']);«<font>

»<table border=0 bgcolor=#FFFFFF cellpadding=15 cellspacing=12 ><tr>»;«<td title='».$message['text']. «'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font>

}

}

else

{

$title = «Доска объявлений»;

$keywords = «Доска объявлений.»;

$description = «Доска объявлений»;

include («design/itop.inc.php»); // выводим шапчёнку

echo «<strong><center>Нет запрашиваемых данных.</center></strong><br><br><br>»;«<a href=\ «http:// ». $_SERVER ['HTTP_HOST']. "/board/add/\» title=\ «Добавить объявление\"><center>Добавить объявление</a> |»;

echo «<a href=\ «http:// ». $_SERVER ['HTTP_HOST']. "/board/\» title=\ «На главную страницу Доски объявлений\">На главную страницу Доски объявлений</a></center><br>»;

exit();

}

}(! empty ($_GET['id_cat']) && intval ($_GET['id_cat']) > 0 && empty ($_GET['id_mess']))

{

$query = mysql_query («SELECT *board as A, board_cat as BA.id_category = B.idA.id_category =». intval ($_GET['id_cat']). "»);

(mysql_num_rows ($query) > 0)

{

$echo_cat = mysql_fetch_array($query);

$num = mysql_num_rows ($query);

@$start = page_list ($_GET['page'], $num, $COUNT_SHOW_BOARD);

$query = mysql_query («SELECT A.id as board_id, A.*, B.* FROM board as A, board_cat as B WHERE A.id_category = B.id AND A.id_category =». $_GET ['id_cat'].» AND A.checkbox_top > 0 ORDER by time DESC LIMIT $start, $COUNT_SHOW_BOARD»);

$title = «Доска объявлений | Категория».$echo_cat ['name_cat'];

$keywords = «Доска объявлений. Категория».$echo_cat ['name_cat'].» |».$echo_cat['description'];

$description = «Доска объявлений | Категория».$echo_cat['description'];(«design/itop.inc.php»);«<a href=\ «http:// ». $_SERVER ['HTTP_HOST']. "/board/add/\» title=\ «Добавить объявление\"><center>Добавить объявление</a> |»;

echo «<a href=\ «http:// ». $_SERVER ['HTTP_HOST']. "/board/\» title=\ «Вернуться на главную страницу Доски объявлений\">Вернуться</a> на главную страницу Доски объявлений</center><br>»;

echo»<div align=center>»;«Категория: <a href = \ «http:// ». $_SERVER ['HTTP_HOST']. "/board/».$echo_cat ['id_category']. "/\">».$echo_cat ['name_cat']. «</a> | Всего объявлений в данной категории: [».$num.»]»;

echo «</div><br><br>»;

($top_board = mysql_fetch_array($query))

{»<table style=\ «BORDER-BOTTOM: #FF9900 2px dashed; border-top: #FF9900 2px dashed\» bordercolor=#990000 bgcolor=#FFFEF4 align=center border=0 cellpadding=\ «0\» cellspacing=\ «10\»>

<tr title='».$top_board['title']. "'>

<td><img src=\» http:// ». $_SERVER ['HTTP_HOST']. "/images/att.gif\» alt=\ «Статус: Прикрепленное объявление\»></td>

<td>»;($top_board['type'] == «P») {$type = «&nbsp; Предложение&nbsp;»;} else $type = «&nbsp; Спрос&nbsp;»;«<font size=2 color=#888888>Тип объявления:».$type.» &nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;»;

$date = date («d.m.y», $top_board['time']);«Дата добавления:».$date.» &nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;»;«Просмотров: [».$top_board['hits'].»]</font><br>»;«<font size=4 style=\» font-family: Tahoma\» >

<br />

<strong><a href =\» http:// ». $_SERVER ['HTTP_HOST']. "/board/category/».$top_board ['id_category']. "/message/».$top_board ['board_id']. "/\» title='».$top_board['title']. «'><center>».$top_board['title'].» </center></a></strong>

</font>

<br>»;«<strong>Автор:».$top_board['autor']. «</strong>»;»</td></tr></table><br />»;

}

$query = mysql_query («SELECT A.id as board_id, A.*, B.* FROM board as A, board_cat as B WHERE A.id_category = B.id AND A.id_category =». $_GET ['id_cat'].» AND A.checkbox_top = 0 ORDER by time DESC LIMIT $start, $COUNT_SHOW_BOARD»);                          ($board = mysql_fetch_array($query))

{»<table style=\ «BORDER-BOTTOM: #E9E9E9 2px dashed; border-top: #E9E9E9 2px dashed\» bordercolor=#EEEEEE bgcolor=#F8F8F8 align=center cellpadding=\ «0\» cellspacing=\ «10\»>

<tr title='».$board['title']. "'>

<td><img src=\» http:// ». $_SERVER ['HTTP_HOST']. "/images/other_message.gif\» height=50 alt=\ «Статус: Обычное объявление\»></td>

<td>»;($board['type'] == «P») {$type = «&nbsp; Предложение&nbsp;»;} else $type = «&nbsp; Спрос&nbsp;»;«<font size=2 color=#888888>Тип объявления:».$type.» &nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;»;

$date = date («d.m.y», $board['time']);«Дата добавления:».$date.» &nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;»;«Просмотров: [».$board['hits'].»]</font><br>»;«<font size=4>

}

$path_to_page = «board»;

@show_page_list ($_GET['page'], $num, $COUNT_SHOW_BOARD, $_GET ['id_cat'], $path_to_page);

}

{

$title = «Доска объявлений | Категория».$echo_cat ['name_cat'];

$keywords = «Доска объявлений. Категория».$echo_cat ['name_cat'].» |».$echo_cat['description'];

$description = «Доска объявлений | Категория».$echo_cat['description'];(«design/itop.inc.php»);«<center><strong> «<center><h3>В данной категории ещё нет объявлений.</h3><BR><br>»;

}

}

else

{

$title = «Доска объявлений»;

$keywords = «Доска объявлений, авто, недвижимость, услуги, поиск работы, вакансии, мебель и интерьер, отдых и спорт, красота и здоровье, строительство и ремонт.»;

$description = «Доска объявлений, авто, недвижимость, услуги, поиск работы, вакансии, мебель и интерьер, отдых и спорт, красота и здоровье, строительство и ремонт.»;

include («design/itop.inc.php»);

?>

<form name=primer action=http:// <? echo $_SERVER ['HTTP_HOST'];?>/search/ method=post>

<input type=hidden name='w' value='{$w}'>

<table border=0 bgcolor=fff1df cellspacing= «10»>

<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Пример: <SPAN style= «CURSOR: hand; BORDER-BOTTOM: #000000 1px dotted; TEXT-DECORATION: none»= «document.forms['primer'].search_word.value='Дом'»><strong>Дом</strong></span>&nbsp;&nbsp;&nbsp;

<a href= «http:// <? echo $_SERVER ['HTTP_HOST'];?>/board/add/» title= «Добавить объявление»>

</td></tr>

<tr ><td>

<INPUT size=35 name='search_word' type='text'>&nbsp;&nbsp;

<SELECT name=search_in>

<option value=title selected>в заголовках</OPTION>

<option value=text>в содержании</OPTION>

</SELECT>                

<INPUT type=submit>

</td></tr></table>

<?subcategory ($id, $sub)

{

$categories = mysql_query («SELECT * FROM board_cat WHERE root_category = $id ORDER by name_cat ASC»);($category = mysql_fetch_array($categories))

{

$num_mess = 0;

$num_mess = mysql_numrows (mysql_query («SELECT * FROM board WHERE id_category =».$category['id']));($i = 0; $i < $sub; $i++) echo «»;«<a href=\ «http:// ». $_SERVER ['HTTP_HOST']. "/board/».$category['id']. "/\»=\ «Категория:».$category ['name_cat'].» |».$category['description']. "\"><font size=3>

($category['id'], $sub+1);

}

}

$categories = mysql_query («SELECT * FROM board_cat WHERE root_category = 0 ORDER by name_cat ASC»);

«<table width=\ «96%\» border=0 bordercolor=#000000 cellpadding=3 cellspacing=2 align=center><tr>»;

$tr = «0»;($category = mysql_fetch_array($categories))

{

$num_mess = 0;

$num_mess = mysql_numrows (mysql_query («SELECT * FROM board WHERE id_category =».$category['id']));

«<td valign=top><table width=\ «96%\» border=0 bordercolor=#000000 cellpadding=0 cellspacing=2 align=center><tr><td>»;

$sub = 1;«<a href=\ «http:// ». $_SERVER ['HTTP_HOST']. "/board/».$category['id']. "/\» title=\ «Категория».$category ['name_cat'].» на доске бесплатных объявлений\"><img src=\ «http:// ». $_SERVER ['HTTP_HOST']. "/upload/board/».$category['img']. "\» border=0 height=65 alt=\ «Категория».$category ['name_cat'].» на доске бесплатных объявлений\"></a>

<a href=\ «http:// ». $_SERVER ['HTTP_HOST']. "/board/».$category['id']. "/\» title=\ «Категория».$category ['name_cat'].» |».$category['description']. "\"><font size=5>

<br /><span title=\ "».$category['description']. "\ ">».$category['description']. «</span>

<br /><font size=2 color=#999999 title=\ «Всего $num_mess объявл.\">$num_mess объявл.</font>»;

«<table width=\ «96%\» border=0 bordercolor=#000000 cellpadding=10 cellspacing=5><tr><td>»;($category['id'], $sub);«</td></tr></table>»;«</td></tr></table></td>»;

++$tr;($tr% «2» == «0») {echo «</tr><tr>»;}

}«</tr></table>»;

}

$num_mess_all = 0;

$num_mess_all = mysql_numrows (mysql_query («SELECT * FROM board»));«<br><center><strong>

?>

Скрипт для создания Антиспам-картинки, используемой при добавлении объявления. Файл antispam.php


<? PHP

$C_IMAGE_TYPE = 'PNG';

$C_WIDTH = 140;

$C_HEIGHT = 90;

$C_NUM_GENSIGN = 4;

$path_fonts = './fonts/';

$EXT = strtoupper ($HTTP_GET_VARS['ext']);($EXT=='GIF' || $EXT=='JPEG' || $EXT=='PNG') $C_IMAGE_TYPE = $EXT;(is_numeric ($HTTP_GET_VARS['width']) && $HTTP_GET_VARS['width']>100 && $HTTP_GET_VARS['width']<500) $C_WIDTH = $HTTP_GET_VARS['width'];(is_numeric ($HTTP_GET_VARS['height']) && $HTTP_GET_VARS['height']>100 && $HTTP_GET_VARS['height']<500) $C_HEIGHT = $HTTP_GET_VARS['height'];(is_numeric ($HTTP_GET_VARS['qty']) && $HTTP_GET_VARS['qty']>2 && $HTTP_GET_VARS['qty']<10) $C_NUM_GENSIGN = $HTTP_GET_VARS['qty'];_start();_register('securityCode');

$C_FONT_SIZE = intval ($C_HEIGHT/(($C_HEIGHT/$C_WIDTH)*5));

$C_NUM_SIGN = intval(($C_WIDTH*$C_HEIGHT)/150);

$CODE = array();

$LETTERS = array ('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'j', 'k', 'm', 'n', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '2', '3', '4', '5', '6', '7', '8', '9');

$FIGURES = array ('50', '70', '90', '110', '130', '150', '170', '190', '210');

$src = imagecreatetruecolor ($C_WIDTH,$C_HEIGHT);

$fon = imagecolorallocate ($src, 255,255,255);($src, 0,0,$fon);

$FONTS = array();

$dir=opendir ($path_fonts);($fontName = readdir($dir)) {($fontName!=».» && $fontName!=».») {(strtolower(strrchr ($fontName, '.'))=='.ttf') $FONTS[] = $path_fonts.$fontName;

}

}($dir);(sizeof($FONTS)>0) {($i=0;$i<$C_NUM_SIGN;$i++) {

$h = 1;

$color = imagecolorallocatealpha ($src, rand (0,255), rand (0,255), rand (0,255), 100);

$font = $FONTS [rand(0, sizeof($FONTS) - 1)];

$letter = $LETTERS [rand(0, sizeof($LETTERS) - 1)];

$size = rand ($C_FONT_SIZE-2,$C_FONT_SIZE+2);

$angle = rand (0,60);($h == rand (1,2)) $angle = rand (360,300);($src,$size,$angle, rand ($C_WIDTH*0.1,$C_WIDTH-$C_WIDTH*0.1), rand ($C_HEIGHT*0.2,$C_HEIGHT),$color,$font,$letter);

}($i=0;$i<$C_NUM_GENSIGN;$i++) {

$h = 1;

$color = imagecolorallocatealpha ($src,$FIGURES [rand(0, sizeof($FIGURES) - 1)],$FIGURES [rand(0, sizeof($FIGURES) - 1)],$FIGURES [rand(0, sizeof($FIGURES) - 1)], rand (10,30));

$font = $FONTS [rand(0, sizeof($FONTS) - 1)];

$letter = $LETTERS [rand(0, sizeof($LETTERS) - 1)];

$size = rand ($C_FONT_SIZE*2.1-1,$C_FONT_SIZE*2.1+1);

$x = (empty($x))? $C_WIDTH*0.08: $x + ($C_WIDTH*0.8)/$C_NUM_GENSIGN+rand (0,$C_WIDTH*0.01);

$y = ($h == rand (1,2))? (($C_HEIGHT*1.15*3)/4) + rand (0,$C_HEIGHT*0.02): (($C_HEIGHT*1.15*3)/4) - rand (0,$C_HEIGHT*0.02);

$angle = rand (5,20);

$CODE[] = $letter;($h == rand (0,10)) $letter = strtoupper($letter);($h == rand (1,2)) $angle = rand (355,340);($src,$size,$angle,$x,$y,$color,$font,$letter);

}

} else {($x=0;$x<$C_WIDTH;$x++) {($i=0;$i<($C_HEIGHT*$C_WIDTH)/1000;$i++) {

$color = imagecolorallocatealpha ($src,$FIGURES [rand(0, sizeof($FIGURES) - 1)],$FIGURES [rand(0, sizeof($FIGURES) - 1)],$FIGURES [rand(0, sizeof($FIGURES) - 1)], rand (10,30));($src, rand (0,$C_WIDTH), rand (0,$C_HEIGHT),$color);

}

}($x,$y);($i=0;$i<$C_NUM_GENSIGN;$i++) {

$h = 1;

$color = imagecolorallocatealpha ($src,$FIGURES [rand(0, sizeof($FIGURES) - 1)],$FIGURES [rand(0, sizeof($FIGURES) - 1)],$FIGURES [rand(0, sizeof($FIGURES) - 1)], rand (10,30));

$letter = $LETTERS [rand(0, sizeof($LETTERS) - 1)];

$x = (empty($x))? $C_WIDTH*0.08: $x + ($C_WIDTH*0.8)/$C_NUM_GENSIGN+rand (0,$C_WIDTH*0.01);

$y = ($h == rand (1,2))? (($C_HEIGHT*1)/4) + rand (0,$C_HEIGHT*0.1): (($C_HEIGHT*1)/4) - rand (0,$C_HEIGHT*0.1);

$CODE[] = $letter;($h == rand (0,10)) $letter = strtoupper($letter);($src, 5,$x,$y,$letter,$color);

}

}

$HTTP_SESSION_VARS['securityCode'] = implode ('',$CODE);

$_SESSION['securityCode'] = implode ('',$CODE);($C_IMAGE_TYPE=='PNG') {(«Content-type: image/png»);($src);

} elseif ($C_IMAGE_TYPE=='JPEG') {(«Content-type: image/jpeg»);($src);

} else {(«Content-type: image/gif»);($src);

}

imagedestroy($src);

?>

Основной скрипт для системы администрирования. Файл /admin/sboard.php


<?_reporting (E_ALL);(@$_GET['op'] == «drop_message»)

{

$delete_message = mysql_query («DELETE FROM board WHERE id =». $_GET ['id_mess']);

($delete_message)

{«<center><strong>Объявление успешно удалено</strong></center>»;

}

{

echo «<center><strong>Не удалось удалить объявление!</strong></center>»;

}

}(@$_GET['op'] == «edit_message»)

{(($_POST['autor']) &&($_POST['title']) &&($_POST['text']) &&

$_POST['autor']!=»» &&

$_POST['title']!=»» &&

$_POST['text']!=»»

) mysql_query («UPDATE board SET_category = '».$_POST ['id_category']. "',= '».$_POST['autor']. "',= '».$_POST['title']. "',= '».$_POST['email']. "',= '».$_POST['address']. "',= '».$_POST['phone']. "',= '».$_POST['text']. "',= '».$_POST['type']. "',_mess = '».$_POST ['old_mess']. "',_top = '».@$_POST ['checkbox_top']. "',_delete = '».$_POST ['time_delete']. "'         id =». $_GET ['id_mess']);

$result = mysql_query («SELECT * FROM board WHERE id =». $_GET ['id_mess']);

$rows = mysql_num_rows($result);

$line = mysql_fetch_array($result);

»

<table cellspacing=2 cellpadding=2 border=0 >

<tr align=right>

<td>

<FORM ACTION=\ «http:// ». $_SERVER ['HTTP_HOST']. "/admin/board/$id_cat/$id_mess/edit_message/\» METHOD=POST>

Автор: <input type=text size=50 name=autor value=\ "».$line['autor']. "\"><br /><br />

Заголовок объявления: <input type=text size=50 name=title value=\ "».$line['title']. "\"><br /><br />mail: <input type=text size=50 name=email value=\ "».$line['email']. "\"><br /><br />

Адрес: <input type=text size=50 name=address value=\ "».$line['address']. "\"><br /><br />

Телефон: <input type=text size=50 name=phone s value=\ "».$line['phone']. "\"><br /><br />

Текст сообщения: <textarea name=text rows=\ «9\» cols=\ «50\">».$line['text']. «</textarea><br /><br />

Время актуальности:

<SELECT name=time_delete>

<OPTION value=7». ($line ['time_delete'] == «7»?» selected»: «»). ">7 дней</OPTION>

<OPTION value=14». ($line ['time_delete'] == «14»?» selected»: «»). ">14 дней</OPTION>

<OPTION value=30». ($line ['time_delete'] == «30»?» selected»: «»). ">30 дней</OPTION>

<OPTION value=60». ($line ['time_delete'] == «60»?» selected»: «»). ">60 дней</OPTION>

<OPTION value=90». ($line ['time_delete'] == «90»?» selected»: «»). ">90 дней</OPTION>

<OPTION value=180». ($line ['time_delete'] == «180»?» selected»: «»). ">180 дней</OPTION>

<OPTION value=365». ($line ['time_delete'] == «365»?» selected»: «»). ">365 дней</OPTION>

</SELECT><br><br />

Тип объявления:

<SELECT name=type>

<option value=S». ($line['type'] == «S»?» selected»: «»). ">Спрос</OPTION>

<option value=P». ($line['type'] == «P»?» selected»: «»). ">Предложение</OPTION>        

</SELECT><br><br />»;

«Объявление одобрено: Да - <input type=radio name=old_mess value=\ «old\» checked>

Нет - <input type=radio name=old_mess value=\ «new\»>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

Топовое объявление: <input type=checkbox name=checkbox_top value=1». ($line ['checkbox_top'] == «1»?» checked»: "»). "><br><br />

«;

$echo_cat_message = mysql_query («SELECT * FROM board_cat WHERE id =».$line ['id_category']. "»);

$echo_cat = mysql_fetch_array ($echo_cat_message);«Категория объявления: <strong>».$echo_cat ['name_cat']. «</strong><br /><br />»;

«Изменить категорию: <select name=id_category>»;subcategory ($id, $sub)

{

$categories = mysql_query («SELECT A.id_category AS mess_id_category, B. * FROM board as A, board_cat as B WHERE B.root_category = $id»);($category = mysql_fetch_array($categories))

{($i = 0; $i < $sub; $i++) echo «»;

«<option value=».$category['id']. "». ($category['id'] == $category ['mess_id_category']?» selected»: «»). ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;».$category ['name_cat']. «<br>»;($category['id'], $sub+1);

}

}

$categories = mysql_query («SELECT * FROM board_cat WHERE root_category = 0»);($category = mysql_fetch_array($categories))

{

$sub = 1;«<option value=».$category['id']. ">».$category ['name_cat']. «<br>»;($category['id'], $sub);

}«</select><br /><br />

<input type=submit value=ИЗМЕНИТЬ>        

</form>

</td>

</tr>

</table>

«;

}(@$_GET['op'] == «drop_category»)

{

$delete_category = mysql_query («DELETE FROM board_cat WHERE id =». $_GET ['id_cat']);

$delete_subcategory_in_category = mysql_query («DELETE FROM board_cat WHERE root_category =». $_GET ['id_cat']);

$delete_message_in_category = mysql_query («DELETE FROM board WHERE id_category =». $_GET ['id_cat']);

($delete_category)

{«<center><strong>Категория успешно удалена</strong></center>

<SCRIPT LANGUAGE=javascript>history.back()</SCRIPT>»;

}

{«<center><strong>Не удалось удалить категорию!</strong></center>»;

}

}(@$_GET['op'] == «edit_category»)

{(isset($_POST ['name_cat']) && $_POST ['name_cat']!=»») mysql_query («UPDATE board_cat SET name_cat = '».$_POST ['name_cat']. «', description = '».$_POST['description']. «', img = '».$_POST['img']. «', root_category = '».$_POST ['id_category']. «' WHERE id =».$_GET ['id_cat']. "»);

$result = mysql_query («SELECT * FROM board_cat WHERE id =». $_GET ['id_cat']);

$rows = mysql_num_rows($result);

$line = mysql_fetch_array($result);

»

<table cellspacing=2 cellpadding=2 border=0 >

<tr align=right>

<td>

<FORM ACTION=\ «http:// ». $_SERVER ['HTTP_HOST']. "/admin/board/$id_cat/edit_category/\» METHOD=POST>

Название: <input type=text size=50 name=name_cat value=\ "».$line ['name_cat']. "\"><br /><br />

Описание: <input type=text size=50 name=description value=\ "».$line['description']. "\"><br /><br />

Название иконки категории: <input type=text size=50 name=img value=\ "».$line['img']. "\"><br /><br />

Выберите категорию: <select name=id_category>»;

«<option value=\ «0\"> - Корневая директория -</option>»;subcategory ($id, $sub)

{

$categories = mysql_query («SELECT * FROM board_cat WHERE root_category = $id»);($category = mysql_fetch_array($categories))

{($i = 0; $i < $sub; $i++) echo «»;«<option value=».$category['id']. «>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;».$category ['name_cat']. «<br>»;($category['id'], $sub+1);

}

}

$categories = mysql_query («SELECT * FROM board_cat WHERE root_category = 0»);($category = mysql_fetch_array($categories))

{

$sub = 1;«<option value=».$category['id']. ">».$category ['name_cat']. «<br>»;($category['id'], $sub);

}«</select><br /><br />

<input type=submit value=Изменить>    

</form>

</td>

</tr>

</table>»;

}(@$_GET['op'] == «mark_all»)

{

$mark = mysql_query («UPDATE board SET old_mess = 'old' WHERE old_mess = 'new'»);«<HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='2; URL=http:// ». $_SERVER ['HTTP_HOST']. "/admin/board/'></HEAD></HTML>»;«<br /><br /><center><strong>Обновление успешно завершено</strong></center>»;

}(@$_GET['op'] == «add_category»)

{(isset($_POST ['name_cat']) && $_POST ['name_cat']!=»»)

{

$query = mysql_query («INSERT board_cat SET name_cat = '».$_POST ['name_cat']. «', description = '».$_POST['description']. «', img = '».$_POST['img']. «', root_category = '».$_POST ['id_category']. «'»);

($query)

{«<center><strong>Категория добавлена</strong></center>»;

}

else

{

exit («Ошибка при добавлении категории»);

}

}

{«<table cellspacing=2 cellpadding=2 border=0 ><tr align=right><td>

<FORM ACTION=\ «http:// ». $_SERVER ['HTTP_HOST']. "/admin/board/add_category/\» METHOD=POST>

Название: <input type=text size=50 name=name_cat value=\ "\"><br /><br />

Описание: <input type=text size=50 name=description value=\ "\"><br /><br />

Название иконки категории: <input type=text size=50 name=img value=\ "\"><br /><br />

Выберите категорию: <select name=id_category>»;

«<option value=\ «0\"> - Корневая директория -</option>»;subcategory ($id, $sub)

{

$categories = mysql_query («SELECT * FROM board_cat WHERE root_category = $id»);($category = mysql_fetch_array($categories))

{($i = 0; $i < $sub; $i++) echo «»;«<option value=\ "».$category['id']. "\ ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;».$category ['name_cat']. «<br>»;($category['id'], $sub+1);

}

}

$categories = mysql_query («SELECT * FROM board_cat WHERE root_category = 0»);($category = mysql_fetch_array($categories))

{

$sub = 1;«<option value=\ "».$category['id']. "\ ">».$category ['name_cat']. «<br>»;($category['id'], $sub);

}«</select><br /><br />

<input type=submit value=Добавить категорию style=\ «border:1px solid red;\"></form></td></tr></table>»;

}

}(! empty ($_GET['id_cat']) && intval ($_GET['id_cat']) > 0 && empty ($_GET['id_mess']))

{

$query = mysql_query («SELECT * FROM board as A, board_cat as B WHERE A.id_category = B.id AND A.id_category =». $_GET ['id_cat'].» ORDER by time DESC»);

$num = mysql_num_rows ($query); «<strong>Количество объявлений:</strong>».$num. «<br><br>»;

@$start = page_list ($_GET['page'], $num, $COUNT_SHOW_BOARD);

$query = mysql_query («SELECT A.id as board_id, A.*, B.* FROM board as A, board_cat as B WHERE A.id_category = B.id AND A.id_category =». $_GET ['id_cat'].» ORDER by time DESC LIMIT $start, $COUNT_SHOW_BOARD»);

($board = mysql_fetch_array($query))

{«Автор:».$board['autor']. «<br>»;

$date = date («d.m.y», $board['time']); echo «Дата добавления:».$date. «<br>»;«Заголовок объявления: <b>».$board['title']. «</b><br>»;«<a href =\» http:// ». $_SERVER ['HTTP_HOST']. "/board/category/».$board ['id_category']. "/message/».$board ['board_id']. "/\">Подробнее…</a><br>»;

«<BR><a href =\» http:// ». $_SERVER ['HTTP_HOST']. "/admin/board/».$board ['id_category']. "/».$board ['board_id']. "/edit_message/\">Редактировать объявление</a> |»;«<a href =\» http:// ». $_SERVER ['HTTP_HOST']. "/admin/board/».$board ['id_category']. "/».$board ['board_id']. "/drop_message/\">Удалить объявление</a><hr >»;

}

$path_to_page = «admin/board»;

@show_page_list ($_GET['page'], $num, $COUNT_SHOW_BOARD, $_GET ['id_cat'], $path_to_page);

}

{

$new_mes = mysql_query («SELECT * FROM board WHERE old_mess = 'new' ORDER by time DESC»);

$num_mess_new = mysql_num_rows (mysql_query («SELECT * FROM board WHERE old_mess = 'new' ORDER by time DESC»));

($num_mess_new!= «0»)

{«<table border=1 align=center cellspacing=0 cellpadding=10 bordercolor=#EEEEEE>

<tr bgcolor=#CCCCCC align=center >

<td width=33%>Заголовок объявления</td>

<td width=33%>Категория объявления</td>

<td width=20%>Действие</td>

</tr>»;

while ($new_message = mysql_fetch_array ($new_mes))

{«<tr>»;»<td>».$new_message['title']. «</td>»;«<td>»;

$cat = mysql_query («SELECT * FROM board_cat WHERE id =».$new_message ['id_category']. "»);

$cat_message = mysql_fetch_array($cat);$cat_message ['name_cat']. «</td>»;

«<td align=center>

<a href =\» http:// ». $_SERVER ['HTTP_HOST']. "/admin/board/».$cat_message['id']. "/».$new_message['id']. "/edit_message/\"><img border=0 src=\ «http:// ». $_SERVER ['HTTP_HOST']. "/images/edit.gif\"></a> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

<a href =\» http:// ». $_SERVER ['HTTP_HOST']. "/admin/board/».$cat_message['id']. "/».$new_message['id']. "/drop_message/\"><img border=0 src=\ «http:// ». $_SERVER ['HTTP_HOST']. "/images/drop.gif\"></a>

</td>»;«</tr>»;

}«</table><br />»;

«»;«&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href =\» http:// ». $_SERVER ['HTTP_HOST']. "/admin/board/mark_all/\"><strong style=\ «background-color:#EEEEEE; color:#000000\"><center>&nbsp;&nbsp;&nbsp; Пометить все объявления, как старые&nbsp;&nbsp;&nbsp;</strong></center></a>»;                 «<br /><br />»;

}

{«<strong><center>Нет свежих объявлений</center></strong><br />»;

}        «<table border=1 align=center cellspacing=0 cellpadding=10 bordercolor=#EEEEEE>»;subcategory ($id, $sub)

{

$categories = mysql_query («SELECT * FROM board_cat WHERE root_category = $id»);($category = mysql_fetch_array($categories))

{

$num_mess = 0;

$num_mess = mysql_numrows (mysql_query («SELECT * FROM board WHERE id_category =».$category['id']));

«<tr><td>»;($i = 0; $i < $sub; $i++) echo «&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;»;«<a href=\ «http:// ». $_SERVER ['HTTP_HOST']. "/admin/board/».$category['id']. "\"> -».$category ['name_cat']. «</a> [$num_mess]

</td>

<td align=center>

<a href =\» http:// ». $_SERVER ['HTTP_HOST']. "/admin/board/».$category['id']. "/edit_category/\"><strong style=\ «background-color:#EEEEEE\»>&nbsp;&nbsp;&nbsp; Редактировать&nbsp;&nbsp;&nbsp;</strong></a> |

<a href =\» http:// ». $_SERVER ['HTTP_HOST']. "/admin/board/».$category['id']. "/drop_category/\"><strong style=\ «background-color:#CC0000; color:#FFFFFF\»>&nbsp;&nbsp;&nbsp; Удалить&nbsp;&nbsp;&nbsp;</strong></a><BR>

</td></tr>»;($category['id'], $sub+1);

}

}

$categories = mysql_query («SELECT * FROM board_cat WHERE root_category = 0»);

($category = mysql_fetch_array($categories))

{

$num_mess = 0;

$num_mess = mysql_numrows (mysql_query («SELECT * FROM board WHERE id_category =».$category['id']));

$sub = 1;«<tr><td>

<a href=\ «http:// ». $_SERVER ['HTTP_HOST']. "/admin/board/».$category['id']. "/\"><strong>».$category ['name_cat']. «</strong></a> [$num_mess]

</td>

<td align=center>

<a href =\» http:// ». $_SERVER ['HTTP_HOST']. "/admin/board/».$category['id']. "/edit_category/\"><strong style=\ «background-color:#EEEEEE\»>&nbsp;&nbsp;&nbsp; Редактировать&nbsp;&nbsp;&nbsp;</strong></a> |

<a href =\» http:// ». $_SERVER ['HTTP_HOST']. "/admin/board/».$category['id']. "/drop_category/\"><strong style=\ «background-color:#CC0000; color:#FFFFFF\»>&nbsp;&nbsp;&nbsp; Удалить&nbsp;&nbsp;&nbsp;</strong></a><BR>

</td></tr>»;($category['id'], $sub);

}«</table><br /><br /><br />»;       «<a href =\» http:// ». $_SERVER ['HTTP_HOST']. "/admin/board/add_category/\"><strong style=\ «background-color:#CC0000; color:black;\"><center>&nbsp;&nbsp;&nbsp; Добавить категорию&nbsp;&nbsp;&nbsp;</strong></center></a>»;

Приложение Б

Листинг страниц сайта, относящихся к добавлению и поиску объявлений

<?_start();_register('scd');(«mysql.php»);(«func.php»);(«admin/config.php»);

$errors = 0;(isset($HTTP_POST_VARS['securityCode']) && (isset ($HTTP_SESSION_VARS['securityCode']) || isset ($_SESSION['securityCode'])))

{(strtolower($HTTP_POST_VARS['securityCode'])==$HTTP_SESSION_VARS['securityCode'] || strtolower ($HTTP_POST_VARS['securityCode'])==$_SESSION['securityCode'])

{

$errors = 0;

}

{

$errors = 1;«<HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='4; URL=http:// ». $_SERVER ['HTTP_HOST']. "/board/add/'></HEAD></HTML>»;«<br /><br /><center><strong>Введите правильно то, что вы увидите на картинке с защитным кодом!</strong></center>»;();

}

}

($_POST['autor']          == «») {$errors = 1; echo «<center>Незаполнено поле \«Автор\ «</center><BR>»;}($_POST['title']         == «») {$errors = 1; echo «<center>Незаполнено поле \«Заголовок объявления\ «</center><BR>»;}($_POST['text']      == «») {$errors = 1; echo «<center>Незаполнено поле \«Текст объявления\ «</center>»;}($_POST['email']   != «») {if (! preg_match ('/^[-0-9a-z_]+@([-0-9a-z_]+\.)+[a-z] {2,6}$/i',$_POST['email'])) {$errors = 1;}}

($errors!= 0)

{«<HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='3; URL=http:// ». $_SERVER ['HTTP_HOST']. "/board/add/'></HEAD></HTML>»;«<center><strong>Вернитесь и правильно заполните все обязательные поля формы!</strong></center>»;();

}($errors == 0)

{

$id_category        = intval ($_POST['id_category']);

$autor                           = htmlspecialchars (substr($_POST [«autor»], 0,40));

$title                             = htmlspecialchars (substr($_POST['title'], 0, 100));

$address              = htmlspecialchars (substr($_POST['address'], 0, 100));

$phone                         = htmlspecialchars (substr($_POST['phone'], 0, 80));

$time_delete        = intval ($_POST['time_delete']);

$text                    = nl2br (htmlspecialchars(substr ($_POST['text'], 0, 500)));

$email                           = substr ($email, 0, 50);

($errors!= 1)

{(! get_magic_quotes_gpc())

{

$autor = mysql_escape_string($autor);

$title = mysql_escape_string($title);

$address = mysql_escape_string($address);

$phone = mysql_escape_string($phone);

$email = mysql_escape_string($email);

$text = mysql_escape_string($text);

}

{

$autor = str_replace («'», "`»,$autor);

$title = str_replace («'», "`»,$title);

$address = str_replace («'», "`», $address);

$phone = str_replace («'», "`»,$phone);

$email = str_replace («'», "`»,$email);

$text = str_replace («'», "`»,$text);

}

}

else

{

echo «Ошибочка при внесении данных в базу. Попробуйте еще раз…<br />»;

}

$query = «INSERT board (id_category,,,,,,,,,_delete

) VALUES (

'».$id_category. "',

'».$autor. "',

'».$title. "',

'».$email. "',

'».$address. "',

'».$phone. "',

'».$text. "',

'».$_POST['type']. "',

'».time(). "',

'».$time_delete. "'

)»;

$result = mysql_query($query);

($result)

{

$title = «Объявление добавлено»;

$keywords = «Доска бесплатных объявлений»;

$description = «Доска бесплатных объявлений. Спрос и предложения. Поиск работы и вакансии. Недвижимость. Мебель и интерьер. Досуг и отдых.»;

include («design/itop.inc.php»);

echo «<HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='1; URL=http:// ». $_SERVER ['HTTP_HOST']. "/board/».$_POST ['id_category']. "/'></HEAD><br /><center><strong>Объявление добавлено</strong></center></HTML>»;

}

else

{

}

}(«design/foot.inc.php»);

?>

Файл ssearch.php - скрипт для поиска объявлений

<?(LC_ALL, 'ru_RU.CP1251');

$title = «Поиск по сайту»;(«design/itop.inc.php»);

(isset($_POST ['search_word']))      {$search = $_POST ['search_word'];}(isset($_POST ['search_in']))                {$search_in = $_POST ['search_in'];}

$search = strip_tags($search);

$search = trim($search);

($search == «» || strlen($search) < «3» || strlen($search) > «64»)

{

echo «<br>Вернитесь <a href='javascript:history.back(1)'>назад</a> и введите искомое выражение, с количеством символов не менее 3 и не более 64.»;

include («design/foot.inc.php»);();

}

{«Вы искали <strong>».htmlspecialchars($search). «</strong>.»;

(! get_magic_quotes_gpc())

{

$search = mysql_escape_string($search);

}

{

$search = str_replace («'», "`»,$search);

}

($search_in == «title»)                             {$gde = «В заголовках объявлений»;}($search_in == «text»)                        {$gde = «В содержании объявлений»;}

($search_in == «title»)

{

$query = mysql_query («SELECT * FROM board WHERE title LIKE '%». $search. «%'»);

$count_rows = mysql_num_rows ($query);

($count_rows > 0)

{«$gde найдено позиций: [<strong>».$count_rows. «</strong>]<br /><br />»;($message = mysql_fetch_array($query))

{

$html_title = $message['title'];

$message['title'] = eregi_replace ($search, «<font color=\ «red\"><strong>$search</strong></font>», $message['title']);«<a href =\» http:// ». $_SERVER ['HTTP_HOST']. "/board/category/».$message ['id_category']. "/message/».$message['id']. "/\» title='$html_title'><img src=\ «http:// ». $_SERVER ['HTTP_HOST']. "/upload/board/arr.jpg\» height=9 border=0 alt='$html_title'></a>

<a href =\» http:// ». $_SERVER ['HTTP_HOST']. "/board/category/».$message ['id_category']. "/message/».$message['id']. "/\» title='$html_title'>».$message['title']. «</a><br />»;

}

}

else

{

echo «По Вашему запросу ничего не найдено.»;

}

}($search_in == «text»)

{

$query = mysql_query («SELECT * FROM board WHERE text LIKE '%». $search. «%'»);

$count_rows = mysql_num_rows ($query);

($count_rows > 0)

{«$gde найдено позиций: [<strong>».$count_rows. «</strong>]<br /><br />»;($message = mysql_fetch_array($query))

{

$html_title = $message['text'];

$me_title = $message['title'];

$message['text']=eregi_replace ($search, «<font color=\ «red\"><strong>$search</strong></font>», $message['text']);

»<table style=\ «BORDER-BOTTOM: #E9E9E9 2px dashed; border-top: #E9E9E9 2px dashed\» bordercolor=#EEEEEE bgcolor=#F8F8F8 align=center cellpadding=\ «0\» cellspacing=\ «10\»>

<tr title='».$message['title']. "'>

<td>»;

«<a href =\» http:// ». $_SERVER ['HTTP_HOST']. "/board/category/».$message ['id_category']. "/message/».$message['id']. "/\» title='$me_title'><img src=\ «http:// ». $_SERVER ['HTTP_HOST']. "/upload/board/arr.jpg\» height=9 border=0 alt='$me_title'></a>»;

«<strong title='$me_title'><a href =\» http:// ». $_SERVER ['HTTP_HOST']. "/board/category/».$message ['id_category']. "/message/».$message['id']. "/\» title='$me_title'>Заголовок:».$message['title']. «</a> </strong><br />»;«<strong title='$html_title'>Содержание объявления: </strong>».$message['text'];«</td></tr></table><br />»;

}

}

else

{

echo «По Вашему запросу ничего не найдено.»;

}

}

}(«design/foot.inc.php»);

?>

Дамп базы данных

 

- phpMyAdmin SQL Dump

version 2.6.1

http://www.phpmyadmin.net

- Хост: localhost

Время создания: Апр 07 2007 г., 02:01

Версия сервера: 4.1.16

Версия PHP: 4.4.4

БД: `test4`

-

- -

Структура таблицы `admin`

TABLE `admin` (

`id` int(11) NOT NULL auto_increment,

`login` varchar(255) NOT NULL default «,

`password` varchar(255) NOT NULL default «,

`fio` varchar(255) NOT NULL default «,

`email` varchar(255) NOT NULL default «,

`phone` varchar(255) NOT NULL default «,

`address` varchar(255) NOT NULL default «,KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=3;

Дамп данных таблицы `admin`

INTO `admin` VALUES (1, 'admin', '21232f297a57a5a743894a0e4a801fc3', 'test_fio', 'ya@ya.ru', '555-55-55', 'test_address');

-

Структура таблицы `board`

TABLE `board` (

`id` int(11) NOT NULL auto_increment,

`id_category` int(11) NOT NULL default '0',

`autor` varchar(32) NOT NULL default «,

`title` varchar(255) NOT NULL default «,

`email` varchar(32) NOT NULL default «,

`address` varchar(255) NOT NULL default «,

`phone` varchar(255) NOT NULL default «,

`text` text NOT NULL,

`hits` int(11) NOT NULL default '0',

`type` enum ('S', 'P') NOT NULL default 'P',

`old_mess` enum ('new', 'old') NOT NULL default 'new',

`checkbox_top` int(1) NOT NULL default '0',

`time` int(11) NOT NULL default '0',

`time_delete` enum ('7', '14', '30', '60', '90', '180', '365') NOT NULL default '30',

`last_edit` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=cp1251 PACK_KEYS=0 CHECKSUM=1 AUTO_INCREMENT=4;

Дамп данных таблицы `board`

INTO `board` VALUES (2, 1, 'admin', 'test_title', 'ya@ya.ru', 'test_address', '555-55-55, 666-77-99', 'test_message, test_message, test_message, <br />\r\ntest_message, test_message, <br />\r\ntest_message, <br />\r\ntest_message, <br />\r\ntest_message, test_message, <br />\r\ntest_message, test_message, test_message, <br />\r\n<br />\r\ntest_message, <br />\r\n<br />\r\ntest_message, test_message….', 0, 'S', 'old', 0, 1175890533, '60', '2007-04-07 00:16:41');INTO `board` VALUES (3, 1, 'admin', 'test_title2', 'ya@ya.ru', 'test_address2', '66-666-66', 'test_message, test_message, test_message, <br />\r\n<br />\r\ntest_message, test_message, <br />\r\n<br />\r\ntest_message, <br />\r\n<br />\r\ntest_message, test_message…….', 3, 'S', 'old', 1, 1175890589, '90', '2007-04-07 01:41:50');

-

Структура таблицы `board_cat`

TABLE `board_cat` (

`id` int(11) NOT NULL auto_increment,

`root_category` int(11) NOT NULL default '0',

`name_cat` varchar(255) NOT NULL default «,

`description` varchar(255) NOT NULL default «,

`img` varchar(255) NOT NULL default «,KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=13;

-

Дамп данных таблицы `board_cat`

INSERT INTO `board_cat` VALUES (1, 0, 'Авто-, мото-, вело-', 'Автомобили, мотоциклы, мопеды, велосипеды. Покупка, продажа, прокат…', 'avto.gif');

INSERT INTO `board_cat` VALUES (2, 0, 'Интерьер', 'Мебель, посуда, аксессуары, декорирование. Ремонт, восстановление, услуги…', 'interer.gif');

INSERT INTO `board_cat` VALUES (3, 0, 'Недвижимость', 'Покупка, продажа, ипотека, аренда. Дома, дачи, коммерческая недвижимость…', 'nedvijimost.gif');

INSERT INTO `board_cat` VALUES (4, 0, 'Бытовая и оргтехника', 'Бытовая и оргтехника. Компьютеры и комплектующие. Сервисное обслуживание и ремонт…', 'tehnika.gif');

INSERT INTO `board_cat` VALUES (5, 0, 'Красота и здоровье', 'Косметика, парфюмерия. Медицина. Медицинские и косметологические услуги…', 'krasota.gif');

INSERT INTO `board_cat` VALUES (6, 0, 'Бизнес и финансы', 'Деловые услуги, предложения, инвестиции. Бартер и взаимозачеты…', 'biznes.gif');

INSERT INTO `board_cat` VALUES (7, 0, 'Досуг и развлечения', 'Туризм. Спорт. Книги, видео, аудио, коллекционирование. Фото, кино, оптика. Творчество…', 'dosug.gif');

INSERT INTO `board_cat` VALUES (8, 0, 'Флора и фауна', 'Домашние и дикие животные, растения, услуги, инвентарь и аксессуары…', 'pets.gif');

INSERT INTO `board_cat` VALUES (9, 0, 'Работа', 'Поиск работы. Агенства. Вакансии и резюме…', 'rabota.gif');

INSERT INTO `board_cat` VALUES (10, 0, 'Образование и наука', 'Курсы, уроки, консультации. Воспитатели и репититорство…', 'nauka.gif');

INSERT INTO `board_cat` VALUES (11, 0, 'Строительство и ремонт', 'Стройматериалы и оборудование. Строительство, ремонт, обслуживание…', 'stroitelstvo.gif');

INSERT INTO `board_cat` VALUES (12, 0, 'Другие товары и услуги', 'Грузоперевозки. Дизайн. Услуги в интернет. Кредиты. Услуги, не перечисленные в основных разделах…', 'other.gif');

 

Файл.htaccess, который отвечает за настройку Apache


ErrorDocument 401 http://test1.php/error.php403 http://test1.php/error.php404 http://test1.php/error.php500 http://test1.php/error.php

_value error_reporting 7_value register_globals 1

on/

##################################images/code.gif /antispam.php

^board$ sboard.php^board/$ sboard.php

^board/sendmessage/compleet$ saddboard.php^board/sendmessage/compleet/$ saddboard.php

^board/add$ saddboardform.php^board/add/$ saddboardform.php

^board/([0-9]+)$ sboard.php? id_cat=$1^board/([0-9]+)/$ sboard.php? id_cat=$1^board/([0-9]+)/page/([0-9]+)$ sboard.php? id_cat=$1&page=$2^board/([0-9]+)/page/([0-9]+)/$ sboard.php? id_cat=$1&page=$2

^board/category/([0-9]+)/message/([0-9]+)$ sboard.php? action=board&id_cat=$1&id_mess=$2^board/category/([0-9]+)/message/([0-9]+)/$ sboard.php? action=board&id_cat=$1&id_mess=$2

^admin/board$ sadmin.php? action=board^admin/board/$ sadmin.php? action=board

^admin/board/([0-9]+)$ sadmin.php? action=board&id_cat=$1^admin/board/([0-9]+)/$ sadmin.php? action=board&id_cat=$1

^admin/board/([0-9]+)/page/([0-9]+)$ sadmin.php? action=board&id_cat=$1&page=$2^admin/board/([0-9]+)/page/([0-9]+)/$ sadmin.php? action=board&id_cat=$1&page=$2

^admin/board/([0-9]+)/([0-9]+)/edit_message$ sadmin.php? action=board&id_cat=$1&id_mess=$2&op=edit_message^admin/board/([0-9]+)/([0-9]+)/edit_message/$ sadmin.php? action=board&id_cat=$1&id_mess=$2&op=edit_message

^admin/board/([0-9]+)/([0-9]+)/drop_message$ sadmin.php? action=board&id_cat=$1&id_mess=$2&op=drop_message^admin/board/([0-9]+)/([0-9]+)/drop_message/$ sadmin.php? action=board&id_cat=$1&id_mess=$2&op=drop_message^admin/board/([0-9]+)/edit_category$ sadmin.php? action=board&id_cat=$1&op=edit_category^admin/board/([0-9]+)/edit_category/$ sadmin.php? action=board&id_cat=$1&op=edit_category

^admin/board/([0-9]+)/drop_category$ sadmin.php? action=board&id_cat=$1&op=drop_category^admin/board/([0-9]+)/drop_category/$ sadmin.php? action=board&id_cat=$1&op=drop_category

^admin/board/add_category$ sadmin.php? action=board&op=add_category^admin/board/add_category/$ sadmin.php? action=board&op=add_category

^admin/board/mark_all$ sadmin.php? action=board&op=mark_all^admin/board/mark_all/$ sadmin.php? action=board&op=mark_all

#########################################################################################################################^search$ ssearch.php^search/$ ssearch.php

^search/page/([0-9]+)$ ssearch.php? page=$1^search/page/([0-9]+)/$ ssearch.php? page=$1

#########################################################################################################################^admin$ sadmin.php^admin/$ sadmin.php^admin/logout$ sadmin.php? action=logout^admin/logout/$ sadmin.php? action=logout

^admin/profile$ sadmin.php? action=profile^admin/profile/$ sadmin.php? action=profile

^admin/profile/edit$ sadmin.php? action=profile&op=edit^admin/profile/edit/$ sadmin.php? action=profile&op=edit

Похожие работы на - Разработка сайта

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!