В този урок ще ви покажа как можете сами да си нпаравите търсачка подобна на Google,но по-опростена. За целта ще са ни нужни 4 файла: index.php, dobavi.php, urls.txt и urlsrch.cgi . В нашата търсачка няма да имаме нужда от mySQL защото всички линкове ще се записват във файла urls.txt.
Да се заемем с index.php:
<HTML>
<HEAD><TITLE>Търсене</Title><style>
</style></HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<BODY BGCOLOR=#FFFFFF TEXT=#000000 LINK=#0000FF VLINK=#800040 ALINK=#800040>
<CENTER>
<FONT SIZE=4 COLOR=000000 FACE="ARIAL,TIMES NEW ROMAN">Т Ъ Р С И И З Н Е Т А</FONT><P>
<FORM METHOD=POST ACTION="http://адрес/urlsrch.cgi">
<INPUT NAME="searchstring" SIZE="30" MAXLENGTH="30">
<INPUT TYPE=SUBMIT VALUE="Търси">
<P><a href="dobavi.php">Добави сайт</a>
</FORM>
</CENTER>
<BR><BR>
<HR width=80% noshade>
<BR>
</BODY>
</HTML>
Горния файл служи за дизайн на търсачката. От там когато потребителя въведе резултата той автоматично ще бъде пренасочван към urlsrch.cgi където вече ще се осъществи търсенето. За целта не забравяйте на 13 ред да сложите точен линк към файла.
dobavi.php:
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<CENTER><FONT SIZE=4 COLOR=000000 FACE="ARIAL,TIMES NEW ROMAN">Д О Б А В И Т В О Я С А Й Т</FONT>
</CENTER>
<FORM METHOD=POST ACTION="http://адрес/urlsrch.cgi">
<B>Заглавие :</B><BR>
<INPUT NAME="linktitle" SIZE="50" MAXLENGTH="50"><BR>
<Font Size=-1>Въведете заглавието на сайта си:</font><BR>
<BR>
<B>URL :</B><BR>
<INPUT TYPE="Text" NAME="linkurl" SIZE="70" MAXLENGTH="100" VALUE="http://" ><BR>
<Font Size=-1>Въведете адреса на сайта си</font><BR>
<BR>
<B>Описание :</B><BR>
<INPUT NAME="linkdescrip" SIZE="70" MAXLENGTH="250"><BR>
<Font Size=-1>Напишете 1-2 изречения,които да описват Вашия сайт по най-добри начин.Най-много 200 символа.
<BR>Тази информация ще бъде показана когато търсачката изведе сайта ви.</font><BR>
<BR>
<B>Ключови думи :</B><BR>
<INPUT NAME="linkwords" SIZE="60" MAXLENGTH="150"><BR>
<Font Size=-1>Въведете ключови думи за вашия сайт разделени чрез интервали.Това ще помогне на потребителите да открият сайта ви.<BR>Ключовите думи няма да бъдат показвани при извеждане на резултата.</font><BR>
<BR>
<B>E-mail :</B><BR>
<INPUT NAME="linkemail" SIZE="40" MAXLENGTH="40"><BR>
<Font Size=-1>Въведете e-mail адреса си,за да можем да се свържем с вас.<BR>
Той няма да бъде показван на потребителите.</font><BR>
<BR>
<INPUT TYPE=submit VALUE="Добави сайт">
<INPUT TYPE=hidden NAME="searchstring" VALUE="**ADD RECORD**">
</FORM>
Не смятам,че тук има нужда от разяснение. Това е файла ,от който потребителите ще могат да регистрират своите сайтове.Отново не забравяйте да дадете точен линк към urlsrch.cgi.
Момента на истината: urlsrch.cgi - основния файл. Не е нужно да променяте нищо по кода:
$fields = 5;
$filename = "urls.txt";
$results = 1000;
&parse_form;
$searchstring = $FORM{'searchstring'};
&addrecord if ($searchstring eq "**ADD RECORD**");
&open_file("FILE1","",$filename);
print "Content-type: text/html\n\n";
print "<HTML>\n";
print "<BODY BGCOLOR=#FFFFFF TEXT=#000000 LINK=#0000FF VLINK=#800040 ALINK=#800040>\n";
print "<TITLE>Резултат от търсенето</TITLE>\n";
print "<CENTER><BR>\n";
print "<FONT SIZE=5 COLOR=000000 FACE="ARIAL,TIMES NEW ROMAN">Резултати от търсенето</FONT></CENTER>\n";
print "<HR width=80% noshade><BR><UL>\n";
$counter = 0;
while (($line = &read_file("FILE1")) && ($counter < $results)) {
# split the fields at the | character
@tabledata = split(/\s*\|\s*/,$line ,$fields);
&check_record;
if ($found == 1) {
$counter++;
&print_record;
}
}
close(FILE1);
print "</UL>\n";
if ($counter == 0) {
print "<BR><B> Съжаляваме,но нищо не е намерено.</B>\n";
}
print "<CENTER>\n";
print "<HR width=80% noshade>\n";
print "<FONT SIZE=3 COLOR=000000 FACE="ARIAL,TIMES NEW ROMAN">От kanadeca специално за web-tourist.net</FONT></CENTER>\n";
print "</CENTER>\n";
print "</A></BODY></HTML>\n";
sub print_record {
print "<BR>\n";
print "<LI><A HREF=" . $linkurl . ">" . $linktitle . "</A> : $linkdescrip</B><BR>\n";
}
sub check_record {
$tabledata
$linktitle = $tabledata[0];
$linkdescrip = $tabledata[1];
$linkwords = $tabledata[2];
$linemail = $tabledata[3];
$linkurl = $tabledata[4];
chop($linkurl);
$searchline = $linktitle . " " . $linkdescrip . " " . $linkwords;
$sfound = 0;
$found = 0;
$notfound = 1;
$stlen = length($searchstring);
if ($stlen > 1) {
@words = split(/ +/,$searchstring);
foreach $aword (@words) {
if ($searchline =~ /\b$aword/i) {
$sfound = 1;
}
else {
$notfound = 0;
}
}
}
if ($sfound == 1 && $notfound == 1) {
$found = 1;
}
if ($stlen <= 1) {
$found = 1;
}
$tlen = length($linktitle);
if ($tlen < 1) {
$found = 0;
}
}
sub addrecord {
$linktitle = $FORM{'linktitle'};
$linkdescrip = $FORM{'linkdescrip'};
$linkwords = $FORM{'linkwords'};
$linkemail = $FORM{'linkemail'};
$linkurl = $FORM{'linkurl'};
$linktitle =~ s/</\</g;
$linkdescrip =~ s/</\</g;
$linkwords =~ s/</\</g;
$linkemail =~ s/</\</g;
$linkurl =~ s/</\</g;
&open_file("FILE1",">>",$filename);
&write_file("FILE1",$linktitle . "|". $linkdescrip. "|" .$linkwords ."|" .$linkemail ."|" .$linkurl ."\n");
close(FILE1);
print "Content-type: text/html\n\n";
print "<html><head><title>Благодаря!</title></head>\n";
print "<body><BR><h3><CENTER>Благодаря,че добавихте сайта си!</CENTER></h3>\n";
print "</body></html>\n";
exit;
}
sub parse_form {
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
if (length($buffer) < 5) {
$buffer = $ENV{QUERY_STRING};
}
@pairs = split(/&/, $buffer);
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$FORM{$name} = $value;
}
}
sub open_file {
local ($filevar, $filemode, $filename) = @_;
open ($filevar,$filemode . $filename) ||
die ("Can't open $filename");
}
sub read_file {
local ($filevar) = @_;
<$filevar>;
}
sub write_file {
local ($filevar, $line) = @_;
print $filevar ($line);
}
Качете всички файлове на сървъра като не забравяте да дадете права на файловете: urls.txt на 777,а urlsrch.cgi на 755.
Надявам се да ви е полезен моя първи урок, ето и ДЕМО
http://eleziaonline.org/tyrsene