Курсовая работа: Разработка сайта. Система поиска по сайту
4. "Первая программа": После изучения преимуществ PHP, истории языка, почему бы не попробовать написать программу? Эта страница поможет вам в этом.
5. Страница "поиск". Вводим, нажимаем "искать…", получаем результат.
6. Панель администрирования. Вводим пароль в форму, попадаем на следующую страницу:
Здесь можно осуществить индексацию сайта (перезапись файла data. dat), в случае изменения каких-либо данных или добавления страниц в сайт. Сменить пароль для администратора. Посмотреть Версию установленного PHP интерпретатора. Узнать к какому семейству относится операционная система, установленная на сервере (Windows, Linux, Mac OS и пр.).
Заключение
В ходе проделанной работы был разработан сайт с системой поиска информации по нему. Тематика сайта: введение в 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. PHP FAQ. Сайт с ответами на вопросы. - 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
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>";