Detta är koden till min gästbok,
vil nu ha så att var det max får vara 25 inlägg per sida, sedan ska sidorna delas upp,
Sida 1 2 3 4
typ som dom har på alxook.com.
Hur ser koden ut för detta.
#!/usr/bin/perl
$lock="2";
$unlock="8";
$forminfo=$ENV{'QUERY_STRING'};
$forminfo=~tr/+/ /;
$forminfo=~s/%(..)/pack("c",hex($1))/ge;
@par=split(/&/,$forminfo);
foreach $a (@par){
($ruta, $text)=split(/=/,$a);
$INFO{$ruta}=$text;
}
$INFO{'namn'}=~/[;<>\*\|´&\$!#\(\)\[\]\{\}:'"]/;
$INFO{'kommentar'}=~/[;<>\*\|´&\$!#\(\)\[\]\{\}:'"]/;
$INFO{'stad'}=~/[;<>\*\|´&\$!#\(\)\[\]\{\}:'"]/;
$INFO{'epost'}=~/^[\w-.]+\@[\w.]+$/;
if($INFO{'namn'} ne "" | | $INFO{'epost'} ne "" | | $INFO{'hemstad'} ne "" | | $INFO{'kommentar'} ne ""){
®istrera_kommentar;
}
else
{
&skriva_gastlista;
}
print "Content-type: text/html\n\n";
print "<html><head><title>Gästbok</title></head>";
print "<body bgcolor=\"#FFFFFF\" text=\"#000000\" link=\"#0000FF\" vlink=\"#0000FF\">";
print "<center><img src=$loggan></center><center><small><br>";
print "<b><br></center></small>";
print "<STYLE>A {text-decoration:none} A:hover{text-decoration:underline} </STYLE></p>";
print "<div align=\"center\"><center><table border=\"0\" width=\"400\"> <tr>";
print "<td width=\"100%\"><p align=\"center\"></p> </td> </tr></table></center></div>";
print "<form action=\"gastbok.pl\" method=\"get\">";
print "<div align=\"center\"><center><table border=\"0\" cellpadding=\"4\" cellspacing=\"4\">";
print "<tr><td align=\"right\"><font color=\"#000000\">";
print "<strong>Namn:</strong></font></td>";
print "<td><input type=\"text\" size=\"30\" maxlength=\"40\" name=\"namn\"></td>";
print "</tr><tr><td align=\"right\"><p align=\"right\"><font color=\"#000000\"><strong>E-post: </strong></font></p>";
print "</td><td><input type=\"text\" size=\"30\" maxlength=\"40\" name=\"epost\"></td>";
print "</tr><tr><td align=\"right\"><p align=\"right\"><font color=\"#000000\"><strong>Hemstad: </strong></font></p>";
print "</td><td><input type=\"text\" size=\"30\" maxlength=\"40\" name=\"hemstad\"></td></tr><tr><td align=\"right\" valign=\"top\">";
print "<p align=\"center\"><font color=\"#000000\"><strong>Kommentar:</strong></font></p></td><td valign=\"top\"><p align=\"right\">";
print "<textarea name=\"kommentar\" rows=\"4\" cols=\"30\" maxlength=\"100\"></textarea><br>";
print "<input type=\"submit\" value=\"Sänd\"> <input type=\"reset\" value=\"Rensa\"></p></td></tr><tr><td>";
print "</td></tr></table></center></div></form>";
print "</body></html>";
sub skriva_gastlista{
$k=0;
flock(TEXT,$lock);
open (TEXT,"$boktext");
while ($rad=<TEXT> ){
$k++;
$rad=~/(.*)::(.*)::(.*)::(.*)::(.*)::(.*)::(.*)::(.*)/;
$INFO1[$k]=$1;
$INFO2[$k]=$2;
$INFO3[$k]=$3;
$INFO4[$k]=$4;
$INFO5[$k]=$5;
$INFO6[$k]=$6;
$INFO7[$k]=$7;
$INFO8[$k]=$8;
}
close (TEXT);
flock(TEXT,$unlock);
}
flock(TEXT,$lock);
open (TEXT,"$boktext");
$kommentarer=0;
@filen=<TEXT>;
foreach $rad (@filen){
$kommentarer++;
}
close (TEXT);
flock(TEXT,$unlock);
$nr=0;
while ($k ne 0){
$SORT1[$nr]=$INFO1[$k];
$SORT2[$nr]=$INFO2[$k];
$SORT3[$nr]=$INFO3[$k];
$SORT4[$nr]=$INFO4[$k];
$SORT5[$nr]=$INFO5[$k];
$SORT6[$nr]=$INFO6[$k];
$SORT7[$nr]=$INFO7[$k];
$SORT8[$nr]=$INFO8[$k];
$nr++;
$k--;
}
print "<center><table border=\"0\" width=\"400\"><TR><TD>";
$nr=0;
while ($nr ne 25){
if($nr eq $kommentarer){
&raknare;
exit;
}
print "<hr>";
if($SORT3[$nr] ne "tomt")
{
print "<b><a href=\"mailto:$SORT3[$nr]\">$SORT2[$nr]</A></b> <small><i> ($SORT7[$nr])</i> <br>\n";
}
else
{
print "<b>$SORT2[$nr]</b> <small><i>($SORT7[$nr])</i><br>\n";
}
print "$SORT5[$nr]</b><p>\n";
if($SORT4[$nr] ne "")
{
print "$SORT4[$nr], $SORT8[$nr] - $SORT1[$nr]</small><br>";
}
else
{
print "$SORT8[$nr] - $SORT1[$nr]</small><br>";
}
$nr++;
if($nr eq 10){
&raknare;
print "</TD></TR></TABLE>";
exit;
}
}
sub raknare{
flock(RAKNARE,$lock);
open (RAKNARE,"$boknr");
while ($rad=<RAKNARE> ){
$rad=~/(.*)::(.*)/;
$besokare[1]=$1;
$kommentar[1]=$2;
}
close (RAKNARE);
flock(RAKNARE,$unlock);
$besokare[1]++;
flock(RAKNARE,$lock);
open (RAKNARE,">$boknr");
print RAKNARE "$besokare[1]::$kommentar[1]";
close (RAKNARE);
flock(RAKNARE,$unlock);
print "<hr><p><small><center>Du är besökare nr: <b>$besokare[1]</b> på denna sida!";
print "<STYLE>A {text-decoration:none} A:hover{text-decoration:underline} </STYLE>";
print "</TD></TR></TABLE>";
exit;
}
sub registrera_kommentar{
if($INFO{'namn'} eq "" | |$INFO{'kommentar'} eq "")
{
print "Content-type: text/html\n\n";
print "<body bgcolor=\"white\" text=\"black\">";
print "<p><left><b><h3>";
print "Namn och kommentar är obligatoriska uppgifter!<br>";
print "Backa med din browser och fyll i glömd uppgift!";
print "</left></h3></b>";
exit;
}
if($INFO{'epost'}=~/[;<>\*\`&\$!#\(\)\[\]\{\}:'"]/)
{
print "Content-type: text/html\n\n";
print "<body bgcolor=\"white\" text=\"black\">";
print "<p><left><b><h3>";
print "Din epost innehåller ett felaktigt tecken!<br>";
print "Backa med din browser och korrigera uppgiften!";
print "</left></h3></b>";
exit;
}
if($INFO{'epost'} eq "")
{
$INFO{'epost'}="tomt";
}
print "Content-type: text/html\n\n";
print "<meta http-equiv=\"Refresh\" content=\"2; URL=$gastbok\">";
print "<body bgcolor=\"white\" text=\"black\">";
print "<p><left><b><h3>";
print "Tack för din kommentar, $INFO{'namn'}!<br>";
print "Du kommer inom kort att förflyttas till gästboken.<br>Om ditt inlägg inte syns, så uppdatera sidan.";
print "</left></h3></b>";
$INFO{'namn'} =~ s/</\<\;/g;
$INFO{'namn'} =~ s/</\>\;/g;
$INFO{'hemstad'} =~ s/</\<\;/g;
$INFO{'hemstad'} =~ s/</\>\;/g;
$INFO{'kommentar'} =~ s/</\<\;/g;
$INFO{'kommentar'} =~ s/</\>\;/g;
$INFO{'kommentar'}=~s/\n/<br>/g;
@dagar = ("Söndag","Måndag","Tisdag","Onsdag","Torsdag","Fredag","Lördag");
@manader = ("Januari","Februari","Mars","April","Maj","Juni","Juli","Augusti","September","Oktober","November","December");
@tid = localtime(time);
if ($tid[3] > 2){
$tid[3] = $tid[3].":e";
}else{
$tid[3] = $tid[3].":a";
}
if ($tid[0] < 10){
$tid[0] = "0".$tid[0];
}
if ($tid[1] < 10){
$tid[1] = "0".$tid[1];
}
if ($tid[2] < 10){
$tid[1] = "0".$tid[1];
}
$tid[5]=$tid[5]+1900;
$datum= "$dagar[$tid[6]]en den $tid[3] $manader[$tid[4]] $tid[5]";
flock(FILE,$lock);
open(FILE,"$ord");
@censur=<FILE>;
close FILE;
flock(FILE,$unlock);
map {
chomp;
$replace = '*' x length($_);
$INFO{'namn'} =~ s/$_/$replace/gi;
$INFO{'epost'} =~ s/$_/$replace/gi;
$INFO{'namn'} =~ s/$_/$replace/gi;
$INFO{'hemstad'} =~ s/$_/$replace/gi;
$INFO{'kommentar'} =~ s/$_/$replace/gi;
}
@censur;
@kontroll = ('::');
map {
$replace = '*' x length($_); # Här är det du söker.
$INFO{'namn'} =~ s/$_/$replace/gi;
$INFO{'epost'} =~ s/$_/$replace/gi;
$INFO{'namn'} =~ s/$_/$replace/gi;
$INFO{'hemstad'} =~ s/$_/$replace/gi;
$INFO{'kommentar'} =~ s/$_/$replace/gi;
}
@kontroll;
flock(RAKNARE,$lock);
open (RAKNARE,"$boknr");
while ($rad=<RAKNARE> ){
$rad=~/(.*)::(.*)/;
$besokare[1]=$1;
$kommentar[1]=$2;
}
close (RAKNARE);
flock(RAKNARE,$unlock);
$kommentar[1]++;
flock(RAKNARE,$lock);
open (RAKNARE,">$boknr");
print RAKNARE "$besokare[1]::$kommentar[1]";
close (RAKNARE);
flock(RAKNARE,$unlock);
flock(LOGG,$lock);
open (LOGG,">>$boktext");
print LOGG "$kommentar[1]::$INFO{'namn'}::$INFO{'epost'}::$INFO{'hemstad'}::$INFO{'kommentar'}::$INFO{'R1'}::$ENV{'REMOTE_ADDR'}::$datum\n";
close (LOGG);
flock(LOGG,$unlock);
exit;
}
Mycket tacksam för svar.