Here is a better commented version of the Perl service program. The old
comments were just for me.
#!C:\Perl\bin\perl
#this program reads a string sent by the post method
#and makes an xml file from it. This xml file is
#displayed in HTML as a blog.
$LengthOfArray=51;
print Content-type:text/html\n\n;
#read input string sent by post method
$input =$ENV{'QUERY_STRING'};
#get rid of hex packing and other chars
$input =~ s/%(..)/pack(c,hex($1))/eg;
$input =~ tr|;|.|;
$input =~ tr|'| |;
$input =~ tr|| |;
#split the incoming string string
($name,$password, $comment, $select) = split(//,$input);
#split data again at equal sign relationship
($dummey,$name) = split(/=/,$name);
#replace a + with a space
$name =~ tr|+| |;
if(!$name)
{$name =no_data;}
#security replace all control characters with a underbar
$name =~ tr/\000-\047/_/;
#split data again at equal sign relationship
($dummey,$comment) = split(/=/,$comment);
#replace a + with a space
$comment =~ tr|+| |;
if(!$comment)
{$comment =no_data;}
#security replace all control characters with a space
$comment =~ tr/\000-\047/ /;
#split data again at equal sign relationship
($dummey,$password) = split(/=/,$password);
#replace a + with a space
$name =~ tr|+| |;
if(!$passowrd)
{$passowrd =no_data;}
#security replace all control characters with a underbar
$password =~ tr/\000-\047/_/;
#split data again at equal sign relationship
($dummey,$select) = split(/=/,$select);
#replace a + with a space
$select =~ tr|+| |;
if(!$select)
{$select =no_data;}
#security replace all control characters with a underbar
$select =~ tr/\000-\047/_/;
# check to see if password entered
if($password ne Turners)
{$name =Blocked!;
$comment =Comment blocked, Wrong Password!;
$select =Blocked!;}
# open the relational.txt file for input
..
open(RELDATA, BlogRelData.txt);
flock(RELDATA, 2);
@array = RELDATA;
flock(RELDATA, 8);
close (RELDATA);
($count, $xname, $xcomment, $date, $xselect)=split(/;/,$array[0]);
#count test and reset
if($count eq )
{$count =0;}
else
{$count = $count+1;}
if($count 1000)
{$count =0;}
# get the server time
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =
gmtime(time);
#convert hour and month to eastern standard time
if($hour = 5)
{
$hour=$hour+19;
$mday=$mday-2;
}
else
{$hour=$hour-5;
$mday=$mday-1;
}
#compost the date variable
$date = Month-.$mon. Day-.$mday. Hour-.$hour;
# compose a period delimited composite variable
$data = $count.;.$name.;.$comment.;.$date.;.$select;
#determine the array length
$alength = @array;
#limit the length of the array
if($alength = $LengthOfArray)
{pop(@array);}
#unshift new comosite array value into array
unshift(@array, $data);
#output the array to a text file-
if($count = 0 $count 10)
{
open(RESULT, BlogRelData.txt);
flock(RESULT, 2);
foreach $array(@array)
{
$array =~ s/\n//g;
print RESULT $array;
print RESULT \n;
}
flock(RESULT, 8);
close (RESULT);
}
#print array to an XML file
#open the xml file for
output..
open(XML, BlogData.xml);
flock(XML, 2);
print XML ?xml version=\1.0\ encoding=\ISO-8859-1\?\n;
print XML Namefile\n;
# xml output sequence...
for( $i=0; $i $alength; $i=$i+1 )
{
$packet = $array[$i];
($count, $xname, $xcomment, $xdate, $xselect)=split(/;/, $packet);
if($xpages eq )
{$xpages =no data;}
#security replace all control characters with an underbar
$xname =~ s/(([^]|\n)*)/_/g;
$xcomment =~ s/(([^]|\n)*)/_/g;
$xdate =~ s/(([^]|\n)*)/_/g;
$xselect =~ s/(([^]|\n)*)/_/g;
# xml output sequence...
print XML cd\n;
print XML visitor;
print XML $count;
print XML /visitor\n;
print XML date;
print XML $xdate;
print XML /date\n;
print XML name;
print XML $xname;
print XML /name\n;
print XML comment;
print XML $xcomment;
print XML /comment\n;
print XML select;
print XML $xselect;
print XML /select\n;
print XML /cd\n;
}
print XML /Namefile;
flock(XML, 8);
close (XML);
#sleep for seconds
sleep(1);
# REDIRECT TO BACK TO THE HTML TABLE ..
print html\n;
print script\n;
print
window.location.replace(\http://www.angelfire.com/scifi2/zpt/blog.html\;);
print /script\n;
print /html;
#END OF XML FILE