Разработка сайта. Система поиска по сайту

PHP (Personal Home Page) - язык создания сценариев, история его развития и основные преимущества. Серверные и клиентские технологии. Разработка PHP-скрипта системы поиска по сайту с панелью администрирования. Блок-схемы файлов, руководство пользователя.

Оглавление

Введение

1. О языке PHP

1.1 Что такое РНР?

1.2 Серверные и клиентские технологии

1.3 История развития PHP

2. Разработка программы

2.1 Тематика

2.2 Схема сайта

2.3 Разработка php - скрипта системы поиска

2.4 Блок-схемы файлов

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

Заключение

Список используемой литературы

Приложение

Введение

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

Одним из примеров нового направления информационных технологий может служить бурное развитие программ с открытым кодом (OSS - Open Source Software), свободно доступных как для распространения-, так и для модификации всеми желающими. Наиболее известной в этом смысле является операционная система Unix, в частности ядро Linux. Однако, хотя с помощью программ с открытыми исходниками создаются стабильные и очень полезные продукты, освоить их порой затруднительно. Отсутствие учебников для начинающих и удобных описаний не позволяет мощным технологиям стать настолько популярными, насколько они того заслуживают. РНР, весьма доступный язык написания сценариев для Web, представляет собой еще один прекрасный инструмент, который, хоть и обладает уникальными возможностями и легок в использовании, отпугивал многих до сегодняшнего дня.

1. О языке PHP

1.1 Что такое РНР?

PHP - язык создания сценариев, который давно перерос свое название. Дело в том, что PHP - это аббревиатура от слов Personal Home Page. Первая версия PHP была создана Расмусом Лердорфом в 1994 г. и представляла собой набор инструментов для отслеживания посетителей Web-страницы. Со временем PHP из набора инструментов превратился в полноценный язык программирования, а его название было изменено как рекурсивное образование PHP HyperText Preprocessor (препроцессор гипертекста PHP).

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

В настоящее время основной версией PHP является пятая.

Существуют два основных конкурента PHP: Active Server Pages (ASP) компании Microsoft и ColdFusion компании Allaire. По сравнению с ними PHP обладает рядом преимуществ, в числе которых:

· Высокая производительность. PHP-программы работают быстрее, чем ASP.

· Функциональность. Разработку PHP-программы можно отделить от собственно разработки Web-страницы, что упростит жизнь и программисту, и дизайнеру.

· Цена. PHP абсолютно бесплатен.

· Простота в использовании. Имеющие опыт программирования на распространенных языках найдут синтаксис PHP хорошо знакомым.

· Переносимость. Один и тот же PHP-код можно использовать как в среде NT, так и на платформах UNIX.

сайт система поиск язык

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

1. 2 Серверные и клиентские технологии

В настоящее время существует множество клиентских и серверных технологий для построения Web-страниц. Клиентские технологии выполняются в браузере (JavaScript, VBScript, Java-апплеты, DHTML и т.д.), а серверные обрабатывает сервер и возвращает клиенту только HTML-код (Perl, ASP,РНР). Язык РНР не ограничивает вас и позволяет с легкостью использовать клиентские технологии совместно с инструкциями РНР. Но стоит ли их использовать без особой надобности? Я думаю, что нет, и это мы сейчас увидим.

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

Не стоит использовать JavaScript, если он не принесет реальной выгоды.

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

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

1.3 История развития PHP

PHP прошёл долгий путь за последние несколько лет, становясь одним из наиболее популярных языков web-разработки.

Истоки PHP лежат в старом продукте, имевшем название PHP/FI. PHP/FI был создан Расмусом Лердорфом в 1995 году и представлял собой набор Perl-скриптов для ведения статистики посещений его резюме. Развитие web еще только начиналось, никаких специальных средств для решения этих задач не было, и к автору хлынул поток сообщений с вопросами. Лердорф начал бесплатно раздавать свой инструментарий, названный "Personal Homepages Tools" (PHP) - ("Инструменты для персональных домашних страниц"). Очень скоро потребовалась большая функциональность и Расмус пишет новую, намного более обширную версию на C, работающую с базами данных и позволяющую пользователям разрабатывать простейшие web-приложения. Расмус Лердорф решил выложить исходный код PHP/FI на всеобщее обозрение, исправление ошибок и дополнение.

PHP/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.

PHP3

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

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

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

Первая статья о PHP была опубликована в чешском варианте 'Computerworld' весной 1998 и освещала PHP 3.0. Как и в случае с книгами, эта была первая в серии статья из множества посвященных PHP и опубликованных в различных известных журналах.

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

PHP 3.0 был официально выпущен в июне 1998 года после 9 месяцев публичного тестирования.

PHP4

К зиме 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. Эти, а также многие другие факты, позволяют с уверенностью сказать, что PHP является одним из самых популярных языков web-программирования!

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

PHP5

Недавно вышла новая, пятая версия PHP (PHP5). PHP5 использует новую версию "движка" Zend - Zend Engine 2.

В PHP5 объектная модель была значительно переработана. При этом было добавлено много новых возможностей, благодаря которым PHP5 получил некоторые черты таких объектно-ориентированных языков, как C++ и Java.

Изменения коснулись производительности встроенных стандартных функций PHP. По некоторым оценкам, скорость работы стандартных функций в PHP5 увеличилась на 40% и более.

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

Поддержка XML в версии PHP5 стала полной, поддерживаются новые расширения DOM и XML.

2. Разработка программы

2.1 Тематика

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

Во всемирной почти все сайты имеют систему поиска (примеры: www.vkontakte.ru - система поиска по этому сайту позволяет найти одного человека из 35 млн.). Система поиска упрощает поиск требуемой информации, тем самым уменьшая время, затрачиваемое на нахождение информации.

Мною был разработан сайт, позволяющий получить начальную информацию о языке PHP. Сайт предоставляет начальные сведения о языке. Система поиска упрощает доступ к информации.


2.2 Схема сайта

Пояснения к схеме сайта:

страницы сайта, поиск, панель администрирования - содержание исходной страницы сайта (попадаем при переходе на начальную страницу);

поисковая система - форма, в которую вводим искомую информацию;

результаты поиска - страница, демонстрирующая результаты поиска, отсюда можем перейти к странице с искомой информацией и в случае "пустого" результата - на начальную страницу;

страница с искомой информацией;

ничего - страница перехода на начальную;

ввод пароля - форма ввода пароля администрирования сайта;

индексирование сайта и запись в БД, изменение пароля, просмотр информации о системе - администрирование сайта.

2.3 Разработка php-скрипта системы поиска

В меню, на начальной странице, присутствует ссылка на страницу поиска.

В страницу поиска встроена форма для поиска:

<form method=get onSubmit=StartSearch () target=SearchWindow>

<tr bgcolor=#faedca align=center><td>

<table>

<tr>

<td align=center><input type=text name=query size=40 class=name onfocus="id=className" onblur="id=''"></td>

<td align=center>

<table border=0 cellspacing=1 cellpadding=0 bgcolor=#000000>

<tr><td><input type=submit value=Искать. class=submit style=cursor: hand></td></tr>

</table>

</td>

</tr>

</table>

Форма выполнена в виде таблицы. Обрабатывается файлом index. php.

Пользователь набирает информацию для поиска, отправит информацию для поиска кнопкой "искать…", скрипт начинает искать требуемую информацию в заранее подготовленном администратором файле (data. dat).

Он структурирован по следующей схеме:

URLстраницы содержащаяся информация в странице.

Пример: http://www.localhost/term_paper/index.html Язык&nbsp; &shy; программирования&nbsp; &shy; PHP&nbsp; &shy; Язык программирования PHP.

Результаты выводятся в форму:

<table border=0 cellspacing=1 cellpadding=1 align=center width=650 bgcolor=#faad1e>

<tr bgcolor=#fce1ae><td align=center><font face=verdana size=1 color=green><b>ПОИСК ОКОНЧЕН</td></tr>

<tr bgcolor=#faedca><td>

<table border=0 width=100%>

<tr><td align=right valign=top width=170><font face=verdana size=1>Вы искали: </td><td><font face=verdana size=1 color=maroon><i>@query@</td></tr>

<tr><td align=right valign=top><font face=verdana size=1>Найдено документов: </td><td><font face=verdana size=1 color=maroon><i>@docs@</td></tr>

<tr><td align=right valign=top><font face=verdana size=1>Время затраченное на поиск: </td><td><font face=verdana size=1 color=maroon><i>@time@ сек. </td></tr>

</table>

</td></tr></table><table border=0><tr><td></td></tr></table>

2.4 Блок-схемы файлов


index. php

admin. php

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

1. Начальная страница. На странице присутствует меню навигации по сайту. Можно попасть на страницы: возможности PHP, преимущества PHP, история развития, первая программа, поиск (задание курсовой работы) и панель администрирования; получить ответ на вопрос "Что такое PHP?". Будет дано определение, расшифровка аббревиатуры "PHP".

2. "Возможности PHP": узнаем о возможностях языка PHP.

3. "История развития": любой, изучающий любой язык программирования, должен знать его историю, а такой язык, как PHP не должен оставаться в стороне.

4. "Первая программа": После изучения преимуществ PHP, истории языка, почему бы не попробовать написать программу? Эта страница поможет вам в этом.

5. Страница "поиск". Вводим, нажимаем "искать…", получаем результат.

6. Панель администрирования. Вводим пароль в форму, попадаем на следующую страницу:

Здесь можно осуществить индексацию сайта (перезапись файла data. dat), в случае изменения каких-либо данных или добавления страниц в сайт. Сменить пароль для администратора. Посмотреть Версию установленного PHP интерпретатора. Узнать к какому семейству относится операционная система, установленная на сервере (Windows, Linux, MacOSи пр.).

Заключение

В ходе проделанной работы был разработан сайт с системой поиска информации по нему. Тематика сайта: введение в PHP. Можно узнать о языке программирования PHP, а именно: его возможностях, истории, получить ответ на вопрос: "Что такое PHP?". На одной из страниц будет продемонстрировано написание первой программы на PHP. Выполнено на пяти страницах.

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

Все требования к работе выполнены.

Список используемой литературы

1. Ульман Л. Основы программирования на PHP: пер. с англ. - М.: ДМК Пресс, 2001. - 288 с.: ил. Самоучитель.

2. Кузнецов М.В., Симдянов И.В., Голышев С.В. РНР 5. Практика разработки Web-сайтов. - СПб.: БХВ-Петербург, 2005. - 960 с: ил.

3. Котеров Д.В., Костарев А.Ф. PHP5. - СПб.: БХВ - Петербург, 2005. - 1120 с.: ил

4. Фленов М.Е. РНР глазами хакера. - СПб.: БХВ-Петербург, 2005. - 304 с: ил.

5. Руководство по PHP. - http://www.php.net/manual/ru/

6. Клуб разработчиков PHP. - http://www.phpclub.ru/

7. PHPFAQ. Сайт с ответами на вопросы. - http://www.phpfaq.ru/

Приложение

Листинг index. php

<? php

function error ($error,$file) {exit ('<font face=verdana size=1 color=#de0000><b>'. $error. '<br> ['.htmlspecialchars ($file). '] </b></font>'); }

@set_time_limit (0);

@SetLocale (LC_ALL,"ru_RU. CP1251");

function CheckConf ($conf)

{

while (list ($section,$array) =each ($conf))

while (list ($key,$value) =each ($array))

if (! strlen ($value))

error ("В файле параметров скрипта, а именно в секции <font color=green>". $section. "</font>, пуст ключ <font color=green>". $key. "</font>",$conf ['dir'] ['path']. "/inc/config. inc. dat");

}

$term_paper=parse_ini_file (". /inc/config. inc. dat",1) or error ("не могу загрузить основной файл параметров",". /inc/config. inc. dat");

include ($term_paper ['file'] ['functions']);

CheckConf ($term_paper);

while (list ($section,$array) =each ($term_paper))

while (list ($key,$value) =each ($array))

$term_paper ['other'] [chr (73). chr (110). chr (105). ucfirst (strtolower ($section)). ucfirst (strtolower ($key))] =$value;

settype ($FirstTime=term_paper_time (),"integer");

if (isset ($_GET ['query']))

{

$query=$UserQuery=term_paper_stripslashes ($_GET ['query']);

preg_match_all ("/\w+/",$query,$QueryArray);

$TempQuery=array_unique ($QueryArray [0]);

$QueryArray [0] =$term_paper ['result'] =null;

while (list (,$value) =each ($TempQuery))

$QueryArray [0] [] =$value;

$result=array ();

$found=0;

if (! $QueryCount=count ($QueryArray [0]))

{

ParseTemplate ($term_paper ['templates'] ['top']);

if (empty ($query))

$term_paper ['other'] ['error'] =$term_paper ['error'] ['EmptyQuery'];

else

$term_paper ['other'] ['error'] =$term_paper ['error'] ['EmptyQueryAfterStrip'];

ParseTemplate ($term_paper ['templates'] ['error']);

ParseTemplate ($term_paper ['templates'] ['bottom']);

exit;

}

elseif ($QueryCount==1)

$query=$QueryArray [0] [0];

else

{

$query=" (";

for ($i=0; $i<$QueryCount; $i++)

if ($i! =$QueryCount-1)

$query. =$QueryArray [0] [$i]. "|";

else

$query. =$QueryArray [0] [$i];

$query. =")";

}

if (! empty ($query))

{

ParseTemplate ($term_paper ['templates'] ['top']);

$OpenDataFile=fopen ($term_paper ['file'] ['data'],'r');

flock ($OpenDataFile,1);

flock ($OpenDataFile,2);

while (! feof ($OpenDataFile))

if (preg_match ("/". $query. "/i",$string=fgets ($OpenDataFile)))

{

/*

list ($term_paper ['other'] ['link'],$term_paper ['other'] ['document']) =split (" ",$string,2);

$term_paper ['other'] ['document'] =substr ($term_paper ['other'] ['document'],0,$term_paper ['other'] ['MaxChars']);

$term_paper ['other'] ['document'] =trim (preg_replace ("/". $query. "/i","<b>\\0</b>",$term_paper ['other'] ['document'])).". ";

ParseTemplate ($term_paper ['templates'] ['result']);

flush ();

*/

$result [] =$string;

$found++;

}

fclose ($OpenDataFile);

if (! $found)

{

$term_paper ['other'] ['error'] =$term_paper ['error'] ['NoFound'];

ParseTemplate ($term_paper ['templates'] ['error']);

}

else

{

$term_paper ['other'] ['navigation'] =term_paper_array_navigation (

(isset ($result))? $result: null,

(isset ($term_paper ['other'] ['MaxShow']))? $term_paper ['other'] ['MaxShow']: null,

(isset ($term_paper ['other'] ['MaxPages']))? $term_paper ['other'] ['MaxPages']: null,

"? query=". $UserQuery. "&SearchPage=",

(isset ($_GET ['SearchPage']))? $_GET ['SearchPage']: null,

null,

null,

(isset ($term_paper ['color'] ['NotActive']))? $term_paper ['color'] ['NotActive']: null,

null,

(isset ($term_paper ['color'] ['CurrentPage']))? $term_paper ['color'] ['CurrentPage']: null,

null,

null,

" "

);

$term_paper ['strings'] =$term_paper_array_navigation;

while (list ($number,$string) =each ($term_paper ['strings'] ['result_strings']))

{

$term_paper ['other'] ['num'] =$term_paper ['strings'] ['count_all_strings'] - $term_paper ['strings'] ['start_string'] - $number;

list ($term_paper ['other'] ['link'],$term_paper ['other'] ['title'],$term_paper ['other'] ['document']) =split (" ",$string,3);

$term_paper ['other'] ['document'] =substr ($term_paper ['other'] ['document'],0,$term_paper ['other'] ['MaxChars']);

$term_paper ['other'] ['document'] =trim (preg_replace ("/". $query. "/i","<b>\\0</b>",$term_paper ['other'] ['document'])).". ";

ParseTemplate ($term_paper ['templates'] ['result']);

flush ();

}

}

$term_paper ['other'] ['query'] =htmlspecialchars ($UserQuery);

$term_paper ['other'] ['docs'] = (empty ($found))?"ноль": $found;

$term_paper ['other'] ['time'] =round (term_paper_time () - $FirstTime,3);

ParseTemplate ($term_paper ['templates'] ['stat']);

if (! empty ($found))

ParseTemplate ($term_paper ['templates'] ['navigation']);

ParseTemplate ($term_paper ['templates'] ['bottom']);

}

}

else

{

$LoadingBody=null;

$OpenLoadingFile=fopen ($term_paper ['dir'] ['templates']. chr (47). $term_paper ['template'] ['parse']. chr (47). $term_paper ['templates'] ['loading'],'r');

$LoadingBody=fread ($OpenLoadingFile,filesize ($term_paper ['dir'] ['templates']. chr (47). $term_paper ['template'] ['parse']. chr (47). $term_paper ['templates'] ['loading']));

fclose ($OpenLoadingFile);

$term_paper ['other'] ['LoadingHtmlCode'] =addslashes (term_paper_strip_new_line ($LoadingBody));

ParseTemplate ($term_paper ['templates'] ['form']);

}

? >

<br><br><br>

<div align="center">

<table>

<tr><a href=". /down.html">На главную</a></tr>

<tr><img src=". /img/logo_pic. gif"></tr>

</table></div>

Листинг admin. php

<? php

function error ($error,$file) {exit ('<font face="verdana" size="1" color="#de0000"><b>'. $error. '<br> ['.htmlspecialchars ($file). '] </b></font>'); }

@set_time_limit (0);

@SetLocale (LC_ALL,"ru_RU. CP1251");

if (isset ($_GET))

while (list ($key,$value) =each ($_GET))

$$key=$value;

header ("Expires: Mon, 26 Jul 1997 05: 00: 00 GMT");

header ("Last-Modified:". gmdate ("D, d M Y H: i: s")." GMT");

header ("Cache-Control: no-store, no-cache, must-revalidate");

header ("Cache-Control: post-check=0, pre-check=0", false);

header ("Pragma: no-cache");

function read_dir ($dir)

{

if ($OpenDir=opendir ($dir))

{

while ( ($file=readdir ($OpenDir))! ==false)

{

if ($file! =". "&&$file! =". ")

{

if (is_dir ($dir. chr (47). $file))

{

if (! is_readable ($dir. chr (47). $file))

error ("нет прав для чтения текущий папки",$dir. chr (47). $file);

elseif (! is_writeable ($dir. chr (47). $file))

error ("нет прав для записи в текущую папку",$dir. chr (47). $file);

else

read_dir ($dir. chr (47). $file);

}

else

{

if (! is_readable ($dir. chr (47). $file))

error ("нет прав для чтения файла",$dir. chr (47). $file);

elseif (! is_writeable ($dir. chr (47). $file))

error ("нет прав для записи в файл",$dir. chr (47). $file);

}

}

}

}

else error ("нетправ",$dir);

}

function CheckConf ($conf)

{

while (list ($section,$array) =each ($conf))

while (list ($key,$value) =each ($array))

if (! strlen ($value))

error ("Вфайлепараметровскрипта, аименновсекции<font color=green>". $section. "</font>, пустключ<font color=green>". $key. "</font>",$conf ['dir'] ['path']. "/". $conf ['dir'] ['inc']. "/config. inc. dat");

}

if (! is_readable (". /inc")) error ("нет прав для чтения текущий папки",". /inc");

elseif (! is_writeable (". /inc")) error ("нет прав для записи в текущую папку",". /inc");

elseread_dir (". /inc");

$term_paper=parse_ini_file (". /inc/config. inc. dat",1);

CheckConf ($term_paper);

include (". /inc/functions. inc. php");

if (isset ($_SERVER ['QUERY_STRING']) &&$_SERVER ['QUERY_STRING'] =="exit")

{

$_COOKIE=null;

setcookie ($term_paper ['script'] ['prefix']. "password",null);

}

#$term_paper ['sections'] =array (

#10=>"Созданиебазы (индексациясайта)",

#20=>"Сменапароля",

#);

$term_paper ['sections'] =array (

'Основное меню'=>array (

'10'=>'создание базы (индексация сайта) '

),

'Пароль'=>array (

'20'=>'смена пароля'

),

'Информация'=>array (

'30'=>'версия PHP интерпретатора',

'40'=>'операционнаясистема'

)

);

function CheckPostRequest ()

{

global $term_paper;

if (! count ($_POST)) return 0;

elseif (! isset ($_POST ['password'])) return 0;

elseif (strlen ($_POST ['password']) ==32) return 0;

else

{

setcookie ($term_paper ['script'] ['prefix']. "password",md5 ($_POST ['password']));

$_COOKIE [$term_paper ['script'] ['prefix']. "password"] =md5 ($_POST ['password']);

return 1;

}

}

function CheckAdminPassword ($password)

{

global $term_paper;

$PasswordFile=term_paper_read_file (". /inc/password. inc. dat");

if (! isset ($password)) return 0;

elseif (! isset ($PasswordFile [0])) return 0;

elseif (strlen ($password) ==32&&isset ($_COOKIE [$term_paper ['script'] ['prefix']. "password"]) &&$_COOKIE [$term_paper ['script'] ['prefix']. "password"] ==$PasswordFile [0]) return 1;

elseif ($password==$PasswordFile [0]) return 1;

elsereturn 0;

}

if (CheckPostRequest ()) $term_paper ['access'] =CheckAdminPassword ($_COOKIE [$term_paper ['script'] ['prefix']. "password"]);

else$term_paper ['access'] =CheckAdminPassword ( (! isset ($_COOKIE [$term_paper ['script'] ['prefix']. "password"]))? null: $_COOKIE [$term_paper ['script'] ['prefix']. "password"]);

if (empty ($term_paper ['access']))

{

if (isset ($_POST ['password'])) $term_paper ['status'] ="парольнеопознан, повторитеввод";

$term_paper ['section'] ['name'] ="Входвуправление";

$term_paper ['result'] ='<br><table border="0" align="center" cellspacing="0" cellpadding="1">

<form method="post">

<tr><td align="right"><font face="verdana" size="1" color="maroon">Пароль: </td><td><input type="password" name="password" size="30" class="name" onfocus="id=className" onblur="id=\'\'"" style="font: italic; width: 165px" value=""></td></tr>

<tr><td height="10"></td></tr>

<tr><td align="right" colspan="2">

<table border="0" cellspacing="0" cellpadding="1" bgcolor="#000000">

<tr><td><input type="submit" value="Выполнитьвход" class="submit" style="width: 163px"></td></tr>

</table>

</td></tr>

<tr><td height="20"></td></tr>

</form>

</table>';

}

else

{

$term_paper ['status'] ="<a href='?". term_paper_char_generator ("qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890",32). "'><font color=#de0000>Главноеменю</font></a>";

$term_paper ['result'] = (! isset ($term_paper ['result']))? null: $term_paper ['result'];

$term_paper ['section'] ['name'] ="Выберите нужное Вам действие";

$term_paper ['result']. ="<table border=0 width=80% align=center>";

$term_paper ['NewSections'] =array ();

#while (list ($a,$b) =each ($term_paper ['sections']))

#$term_paper ['result']. ="<tr><td><a href='? section=". ( ($a+1) *2*3*4*5*6*7*8*90). "'><font face=verdana size=1>". $void++. chr (46). chr (32). ucfirst ($b). "</a></td></tr>";

while (list ($a,$b) =each ($term_paper ['sections']))

{

$term_paper ['result']. ="<tr><td><font face=verdana size=1><b><font color=maroon>". $a. "</font></b><ul type=square>";

while (list ($key,$value) =each ($b))

{

$term_paper ['result']. ="<li><a href='? section=". ( ($key+1) *2*3*4*5*6*7*8*90). "'><font face=verdana size=1><i>". ucfirst ($value). "</i></a></li>";

$term_paper ['NewSections'] [$key] =$value;

}

$term_paper ['result']. ="</ul></td></tr>";

}

$term_paper ['result']. ="</table>";

$term_paper ['result']. ="</td></tr><tr><tr><td bgcolor=maroon colspan=2></td></tr><tr><td colspan=2 bgcolor=#faedcf>";

if (empty ($section)) $term_paper ['result']. ="<center><br><font face=verdana size=1 color=green>Сделайтевыбор</font></br><br></center>";

#elseif (! isset ($term_paper ['sections'] [ ($section-1) /2/3/4/5/6/7/8/90])) $term_paper ['result']. ="<br><center><font face=verdana size=1 color=#de0000>ВыбраныйВамиразделнесуществует</font></cebter><br><br>";

elseif (! isset ($term_paper ['NewSections'] [ ($section-1) /2/3/4/5/6/7/8/90])) $term_paper ['result']. ="<br><center><font face=verdana size=1 color=#de0000>ВыбраныйВамиразделнесуществует</font></cebter><br><br>";

else

{

#$term_paper ['status']. =" <font color=blue>"</font> <font color=green>". $term_paper ['section'] ['name'] =ucfirst ($term_paper ['sections'] [$case=floor ( ($section-1) /2/3/4/5/6/7/8/90)]). "</font>";

$term_paper ['status']. =" <font color=blue>"</font> <font color=green>". $term_paper ['section'] ['name'] =ucfirst ($term_paper ['NewSections'] [$case=floor ( ($section-1) /2/3/4/5/6/7/8/90)]). "</font>";

$term_paper ['result']. ="<table border=0 width=98% align=center><tr><td><font face=verdana size=1>";

switch ($case)

{

case "10":

if (! isset ($_POST ['dir']) ||! isset ($_POST ['url']))

$term_paper ['result']. =

'<script language="javascript" type="text/javascript">

<! - -

function StartSubscripting ()

{

OpenSubscriptingWindow=open ("","SubscriptingWindow","toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=no,left=50,top=50,width=700,height=500");

OpenSubscriptingWindow. focus ();

OpenSubscriptingWindow. document. open ();

OpenSubscriptingWindow. document. write ("<html> <head> <title>Индексация. </title> <meta http-equiv=\"pragma\" content=\"no-cache\"> <meta http-equiv=\"content-type\" content=\"text/html; charset=windows-1251\"></head><body bgcolor=#ffffff> <table border=0 width=100% height=100%> <tr><td align=center><font face=verdana size=4 color=green><i>Идётиндексациясайта, пожалуйста, подождите. </td></tr> </table> </body> </html>");

OpenSubscriptingWindow. document. close ();

}

->

</script>

<table border=0 width=100%>

<form method=post onSubmit=StartSubscripting () target=SubscriptingWindow>

<tr><td height=10></td></tr>

<tr><td align=center><font face=verdana size=1 color=maroon><i>Укажитепапку, вкоторойберётначалоВашсайт (без/ вконце): </td></tr>

<tr><td align=center><input type=text name=dir size=52 class=name onfocus="id=className" onblur="id=\'\'"" style="font: italic; width: 346px" value="'.htmlspecialchars ( (isset ($_SERVER ['DOCUMENT_ROOT']))? $_SERVER ['DOCUMENT_ROOT']: null). '"></td></tr>

<tr><td height=10></td></tr>

<tr><td align=center><font face=verdana size=1 color=maroon><i>УкажитеURL, которыйсоответствуетпапке,<br>которуюВы указали (без / в конце): </td></tr>

<tr><td height=10></td></tr>

<tr><td align=center><input type=text name=url size=52 class=name onfocus="id=className" onblur="id=\'\'"" style="font: italic; width: 346px" value="http://'.htmlspecialchars ( (isset ($_SERVER ['HTTP_HOST']))? $_SERVER ['HTTP_HOST']: null). '"></td></tr>

<tr><td height=10></td></tr>

<tr><td align=center>

<table border=0 cellspacing=0 cellpadding=1 bgcolor=#000000>

<tr><td><input type=submit value="Начатьиндексирование" class=submit style="width: 150px"></td></tr>

</table>

</td></tr>

<tr><td height=10></td></tr>

<tr><td align=center><font face=verdana size=1 color=#de0000><i> (скоростьиндексациизависитотбыстротыВашегокомпьютера,<br>обязательнодождитесьокончанияиндексации) </td></tr>

</form>

</table>';

else

{

if (! is_dir ($_POST ['dir']))

$term_paper ['result']. ="<center><font face=verdana size=1 color=#de0000><b><br><br><br><br>УказаннаяВамипапканесуществует<br><br><br><br><br></b></font></center>";

elseif (! is_readable ($_POST ['dir']))

$term_paper ['result']. ="<center><font face=verdana size=1 color=#de0000><b><br><br><br><br>НетправдлячтенияуказаннойВамипапки<br><br><br><br><br></b></font></center>";

else

{

$_POST ['dir'] =preg_replace ("/\\\+/",chr (47),$_POST ['dir']);

preg_match_all ("/\w+/",term_paper_stripslashes ($term_paper ['other'] ['NotAllowed']),$NotAllowedArray);

$NotAllowedTemp=array_unique ($NotAllowedArray [0]);

$NotAllowedArray [0] =null;

while (list (,$value) =each ($NotAllowedTemp))

$NotAllowedArray [0] [] =$value;

if (! $NotAllowedCount=count ($NotAllowedArray [0]))

$NotAllowed=chr (32);

else

{

$NotAllowed=" (";

for ($i=0; $i<$NotAllowedCount; $i++)

if ($i! = ($NotAllowedCount-1))

$NotAllowed. =$NotAllowedArray [0] [$i]. "|";

else

$NotAllowed. =$NotAllowedArray [0] [$i];

$NotAllowed. =")";

}

function DirSubscripting ($dir)

{

global $term_paper,$OpenData,$NotAllowed;

if (is_readable ($dir2=$dir))

{

$OpenDir=opendir ($dir);

while ( ($file=readdir ($OpenDir))! ==false)

{

if ($file! =". "&&$file! =". "&&! preg_match ("/". $NotAllowed. "/i",$file))

{

if (is_dir ($dir. chr (47). $file))

DirSubscripting ($dir. chr (47). $file);

else

{

$OpenFile=fopen ($dir. chr (47). $file,'r');

$content=fread ($OpenFile,filesize ($dir. chr (47). $file));

preg_match ("! <title> (. *) </title>! is",$content,$title);

$content=term_paper_strip_new_line (strip_tags ($content));

$content=preg_replace ("/ +/s"," ",$content);

preg_match_all ("/\w+/i",$content,$ContentArray);

if (! empty ($title [1]))

{

$title [1] =term_paper_strip_new_line ($title [1]);

preg_match_all ("/\w+/i",$title [1],$NewTitle);

$title [1] =null;

while (list (,$string) =each ($NewTitle [0]))

$title [1]. =$string. chr (32);

}

$dir2=eregi_replace (strtolower ($_POST ['dir']),"",$dir2);

$content=null;

while (list (,$string) =each ($ContentArray [0]))

$content. =$string. chr (32);

if (! empty ($content))

fwrite ($OpenData,$_POST ['url']. $dir2. chr (47). $file. chr (32). ( (isset ($title [1]))? str_replace (" ","&nbsp; &shy; ",$title [1]): str_replace (" ","&nbsp; ",$term_paper ['other'] ['untitled'])). chr (32). $content. chr (13). chr (10));

fclose ($OpenFile);

}

}

}

}

}

$OpenData=fopen ($term_paper ['file'] ['data'],'w');

DirSubscripting ($_POST ['dir']);

fclose ($OpenData);

$term_paper ['result']. ="<center><font face=verdana size=1 color=green><b><br><br><br><br>Сайтудачнопроиндексирован<br><br><br><br><br></b></font></center>";

}

}

break;

case "20":

if (empty ($_POST))

$term_paper ['result']. =<<<HTML

<br><i><font face=verdana color=#de0000>Будьтевнимательны! </font><br><i><ul type=square><li>Послеизмененияпаролястарыйдействоватьбольшенебудет. </li><li>Длятогочтобынезабытьновыйпароль, запишитеегогде-нибудь. </li><li>Впарольмогутвходить: русские, латинскийбуквыицифры. </li><li>Учитываетсярегистр. </li></ul></i>

<br>

<form method=post>

<center>Новыйпароль: <input type=password name=NewPassword size=52 class=name onfocus="id=className" onblur="id=''"" style="font: italic; width: 346px"></center>

<br><br>

<center>

<table border=0 cellspacing=0 cellpadding=1 bgcolor=#000000>

<tr><td><input type=submit value=Применитьclass=submit style="width: 70px"></td></tr>

</table>

</center>

</form>

HTML;

else

{

if (empty ($_POST ['NewPassword'])) $term_paper ['result']. ="<br><center><font color=#de0000>Выневвелиновыйпароль. </font><br><br>. <a href='? section=148780800'>вернутьсянашагназад</a><br><br></center>";

elseif (! eregi ("^ [a-zа-яё0-9] +$",$_POST ['NewPassword'])) $term_paper ['result']. ="<br><center><font color=#de0000>Парольдолженсостоять, толькоизрусских, латинскийбуквицифр. </font><br><br>. <a href='? section=148780800'>вернутьсянашагназад</a><br><br></center>";

else

{

$term_paper ['okay'] =1;

$OpenPasswordFile=fopen (". /inc/password. inc. dat","w");

flock ($OpenPasswordFile,1);

flock ($OpenPasswordFile,2);

fwrite ($OpenPasswordFile,md5 ($_POST ['NewPassword']));

fclose ($OpenPasswordFile);

setcookie ($term_paper ['script'] ['prefix']. "password",md5 ($_POST ['NewPassword']));

$term_paper ['result']. ="<br><center><font color=green>Новыйпарольуспешновнесёнвбазу. </font><br><br></center>";

}

}

break;

case "30":

$term_paper ['section'] ['name'] ="ВерсияPHP интерпретатора";

$term_paper ['result']. ="<br><center>ВерсияPHP интерпретатора - <i><font color=maroon>". phpversion (). "</font></i><br><br>". ( (php_sapi_name () =="cgi")?"<font color=green>УстановленвкачествеCGI</font>": "<font color=#de0000>Установленвкачествемодуля</font>"). "</center><br>";

break;

case "40":

$term_paper ['section'] ['name'] ="Операционнаясистема";

list ($os) =split (" ",php_uname (),2);

$term_paper ['result']. ="<br><center>Операционнаясистема - <i><font color=maroon>". $os. "</font></i></center><br>";

break;

case "100":

echo "цикл не работает";

}

$term_paper ['result']. ="</font></td></tr></table>";

}

}

if (empty ($term_paper ['status'])) $term_paper ['status'] ="входневыполнен";

? >

<html>

<head>

<title><? =$term_paper ['script'] ['name'],", версия: ",$term_paper ['script'] ['version']? > " Управление " <? =ereg_replace ("< [^>] +>", "",ucfirst ($term_paper ['status']))? ></title>

<meta http-equiv="content-type" content="text/html; charset=windows-1251">

<meta http-equiv="pragma" content="no-cache">

<? if (isset ($term_paper ['okay'])) echo '<meta http-equiv="refresh" content="3; url=? '. term_paper_char_generator ("qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890",32). '">';? >

<style type="text/css">

<! - -

a: link{color: #000000; text-decoration: none; }

a: active{color: #000000; text-decoration: none; }

a: visited{color: #000000; text-decoration: none; }

a: hover{color: #de0000; text-decoration: none; }

. name{border: 1px; border-style: solid; height: 16px; border-color: #000000; background-color: #ffe6b7; font-family: verdana; font-size: 10px; color: #de0000; }

#name{border: 1px; border-style: solid; height: 16px; border-color: #000000; background-color: #fef1d8; font-family: verdana; font-size: 10px; color: #de0000; }

. submit{border: 0px; height: 14px; background-color: #ffe6b7; font-family: verdana; font-size: 10px; color: #000000; }

->

</style>

</script>

</head>

<body bgcolor=#ffffff background="images/background. gif" style="cursor: default" topmargin=3>

<table border=0 align=center cellspacing=0 cellpadding=1>

<tr><td align=right><font face=verdana size=1 style="background-color: #ffffff" color=#de0000><? =$term_paper ['status']? ></font></td></tr>

<tr><td>

<table width=500 align=center cellspacing=1 cellpadding=1 bgcolor=#faad1e>

<tr align=center bgcolor=#faedca height=44><td><font face=verdana size=6 color=#FAD27D><b><? =$term_paper ['script'] ['name']? ></i></b></font></td></tr>

<tr><td align=cetner bgcolor=#faedc0>

<table border=0 align=center cellspacing=0 cellpadding=1 width=470>

<tr><td height=10></td></tr>

<tr><td bgcolor=maroon colspan=2></td></tr>

<tr><td align=center bgcolor=#faedca colspan=2><font face=verdana color=maroon size=1><? = (isset ($term_paper ['section'] ['name']))? $term_paper ['section'] ['name']: ''? ></font></td></tr>

<tr><td bgcolor=maroon colspan=2></td></tr>

<tr><td height=10></td></tr>

<tr><td bgcolor=maroon colspan=2></td></tr>

<tr><td colspan=2 bgcolor=#faedca><? = (isset ($term_paper ['result']))? $term_paper ['result']: ''? ></td></tr>

<tr><td bgcolor=maroon colspan=2></td></tr>

<tr><td height=10></td></tr>

</table>

</td></tr>

</table>

</td></tr>

<?

if (! empty ($term_paper ['access']))

{

echo "<tr><td align=right><font face=verdana size=1> (<a href='? exit'>закрытьсессию</a>) </font></td></tr>";

}

? >

</table>

<br><br><br>

<div align="center">

<table>

<tr><a href=". /down.html">Наглавную</a></tr>

<tr><img src=". /img/logo_pic. gif"></tr>

</table></div>

</body>

</html>

Изображения хранятся в папке "img", скрипты поиска в папке "search".

ОТКРЫТЬ САМ ДОКУМЕНТ В НОВОМ ОКНЕ