webForumDet fria alternativet

Antal meddelanden...

Perl & Ruby

1 svar · 366 visningar · startad av Plutt

Medlem sedan dec. 1999151 inlägg
Frågan#1

hejsan!
Jag har laddat ner detta scriptet från jojoxx.net.
Men jag undrar hur man gör för att kunna själv bestämma hur många meddelande som ska visas...
Resten kan sen raderas... så det behövs ingen sida sen som man kan se de älsta meddelandena på...

Går det att fixa, eller är det någon som vet något bra ställe där det finns en sån gästbok
att ladda ner med de funktionerna..?

#!/wwwapps/perl/bin/perl.exe
#/usr/bin/perl
###############################################################################
# Guestbook Pro V 1.2 Copyright Johan Johansson 2000-02-01
# johan@jojoxx.net - http://www.jojoxx.net
###############################################################################

# Variabler
$gb_file = '/wwwroot/jxbookpro/guestbook.html'; # Sökvägen till gästboken.
$forbidden = '/wwwroot/jxbookpro/forbidden.txt'; # Sökvägen till filen med förbjudna ord.
$redirect = '/jxbookpro/thanks.html'; # URL dit användaren skall skickas ner denne
# fyllt i gästboken.
$use_date = '1'; # '1' = Ja, '0' = Nej.
$use_time = '1'; # '1' = Ja, '0' = Nej.
$use_template = '0'; # '1' = Ja, '0' = Nej.
$template = '/wwwroot/jxbookpro/template.html'; # Sökvägen till template-filen.

# Ändra inte följande rader
&read_form;
&init;
&check_required;
if ($#missing >-1){
print "Content-type: text/html\n\n";
print <<End_of_html;
<html>
<head>
<title>Fält saknas.</title>
</head>
<body bgcolor="White">
<h3>Information saknas</h3>
Du glömde att fylla i följande fält:
<ul>
End_of_html
for ($n=0;$n<=$#missing;$n++){
print "<li> " . $field{$missing[$n]};
}
print <<End_of_html;
</ul>
</body>
</html>
End_of_html
exit;
}
&check_entry;
if ($#wordwarning >-1){
print "Content-type: text/html\n\n";
print <<End_of_html;
<html>
<head>
<title>Otillåtna ord.</title>
</head>
<body bgcolor="White">
<h3>Otillåtna ord</h3>
Följande ord är inte tillåtna i gästboken:
<ul>
End_of_html
for ($n=0;$n<=$#wordwarning;$n++){
print "<li> " . $wordwarning[$n];
}
print <<End_of_html;
</ul>
</body>
</html>
End_of_html
exit;
} else {
&add_entry;
print "Location: $redirect\n\n";
}

sub init {
$field{'email'} = "E-post";
$field{'name'} = "Namn";
$field{'homepage'} = "Hemsida";
$field{'comments'} = "Kommentarer";
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
$mon++;
$mon = substr("0" . $mon,length($mon)-1,length($mon)+1);
$mday = substr("0" . $mday,length($mday)-1,length($mday)+1);
$year += 1900;
$date = $year . "-" . $mon . "-" . $mday;
$min = substr("0" . $min,length($min)-1,length($min)+1);
$sec = substr("0" . $sec,length($sec)-1,length($sec)+1);
$clock = $hour . ":" . $min . ":" . $sec;
$dateclock = $date . " / " . $clock;
if ($use_time eq "1" && $use_date eq "1"){
$dateclock = $date . " / " . $clock;
} elsif($use_time eq "1"){
$dateclock = $clock;
} elsif($use_date eq "1"){
$dateclock = $date;
}
}
sub read_form {
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@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;
$value =~ s/<!--(.|\n)*-->//g;
$value =~ s/<([^>]|\n)*>//g;
$form{$name} = $value;
push(@fields,$name);
}
}
sub check_required {
$form{'required'} =~ s/ //g;
@test = split(/,/, $form{'required'});
foreach $t (@test){
if (length($form{$t})<1){
push (@missing, $t);
}
}
}
sub check_entry {
open(MAIN,$forbidden) | | &fatal('Kunde inte öppna filen ' . $forbidden . ' för läsning.');
@forblines = <MAIN>;
close(MAIN);
$forbwords = "";
foreach $forbline (@forblines){
$forbline =~ s/\n//g;
$forbline =~ s/\r//g;
$forbline =~ s/ //g;
$forbwords .= "," . $forbline;
}
$forbwords .= $forbwords . ",";
$form{'comments'} =~ s/\n/ /g;
$form{'comments'} =~ s/\r/ /g;
$form{'comments'} =~ s/ / /g;
@test = split(/ /, $form{'comments'});
foreach $t (@test){
if (index($forbwords, ("," . lc($t) . ","))>-1){

push (@wordwarning, $t);
}
}
}
sub add_entry {
open(MAIN,$gb_file) | | &fatal('Kunde inte öppna filen ' . $gb_file . ' för läsning.');
@main = <MAIN>;
close(MAIN);
open(MAIN,">" . $gb_file) | | &fatal('Kunde inte öppna filen ' . $gb_file . ' för skrivning.');
foreach $main_line (@main) {
if ($main_line =~ /<!--begin-->/) {
print MAIN "<!--begin-->\n";
if ($use_template eq '1'){
open(INDATA,$template);
@templatelines = <INDATA>;
close(INDATA);
foreach $templateline (@templatelines){
if ($templateline =~ /%%(.*)%%/) {
$templateline =~ s/%%clock%%/$clock/g;
$templateline =~ s/%%date%%/$date/g;
foreach $tmp (@fields){
$testmacro = '%%' . $tmp . '%%';
$templateline =~ s/$testmacro/$form{$tmp}/g;
}
}
print MAIN $templateline;
}
} else {
print MAIN "<table border=0>\n";
if ($use_date eq "1"){
print MAIN "<tr><td colspan='2' align='right'><i>$dateclock</i></td></tr>\n";
}
if ($form{'name'}){
if ($form{'email'}){
print MAIN "<tr><td width='100'><b>Namn:</b></td><td width='300'><i><a href=\"mailto:$form{'email'}\">$form{'name'}</a></i></td></tr>\n";
} else {
print MAIN "<tr><td width='100'><b>Namn:</b></td><td width='300'><i>$form{'name'}</i></td></tr>\n";
}
}
if ($form{'homepage'}){
print MAIN "<tr><td width='100'><b>Hemsida:</b></td><td width='300'><i><a href=\"$form{'homepage'}\">$form{'homepage'}</a></i></td></tr>\n";
}
if ($form{'comments'}){
print MAIN "<tr><td width='100'><b>Kommentar:</b></td><td width='300'><i>$form{'comments'}</i></td></tr>\n";
}
print MAIN "</table>\n";
print MAIN "<hr width='400'><br>\n";
}
} else {
print MAIN "$main_line";
}
}
close(MAIN);
}
sub fatal {
my ($errm) = @_;
print "Content-type: text/html\n\n";
print <<End_of_html;
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
<title>Fel!</title>
</head>
<body bgcolor="white">
<h3>Fel!</h3>
$errm
</body>
</html>
End_of_html
}

------------------
God Jul
Plutt

http://pellefant.just.nu

Medlem sedan dec. 19992 555 inlägg
#2

Eftersom scriptet är skrivet på ett sådant sätt, att det inte på något sätt håller reda på hur många inlägg som har skrivits, så finns det inget enkelt sätt att åstadkomma vad du vill. Skulle behövas ganska omfattande ändringar.

Tyvärr har jag ingen specifik färdig gästbok att rekommendera. Men det finns ju gott om färdiga script, så det är väl bara att börja leta. ;)

------------------
Robban < robban@lipogram.com >

254 ms totalt · 3 externa anrop · v20260731065814-full.f363f448
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)