webForumDet fria alternativet

Nytt script, snabb fråga(?)

5 svar · 477 visningar · startad av Plutt

PluttMedlem sedan dec. 1999151 inlägg
#1

Hej!
Jag har hittat ett nytt gästbokscript, som jag tycker verkar bra!
Det är bara en sak jag undar. Kan man ställa in som man kunde på det förra hur många meddelande som kan visas??? För ajg skulle gärna bara visa det nyaste! Altså bara ett...

Här kommer koden:
#!/usr/bin/perl

# Sätt variabler
$guestbookurl = "http://www.kristianstadshop.com/pellefant/meadows/gastbok/index.shtml";
$guestbookreal = "/var/www/www.kristianstadshop.com/wwwroot/pellefant/meadows/gastbok/index.shtml";
$cgiurl = "http://www.kristianstadshop.com/cgi-bin/pellefant/meadows.pl";
#Sökväg till kommandot som skriver ut datum
$date_command = "/bin/date";

# Välj om dina användare ska kunna använda HTML i sina meddelanden:
$allow_html = 0; # 1 = Ja; 0 = Nej

# Hämta datumet för inlägget
$date = `$date_command +"%A, %B %d, %Y at %T (%Z)"`; chop($date);
$shortdate = `$date_command +"%D %T %Z"`; chop($shortdate);

# Hämta data från formuläret på HTML-sidan
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});

# Dela på paren name-value i data från formuläret
@pairs = split(/&/, $buffer);
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);

$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", he x($1))/eg;
$value =~ s/<!--(.|\n)*-->//g;

if ($allow_html != 1) {
$value =~ s/<([^>]|\n)*>//g;
}
$FORM{$name} = $value;
}

# Börja ändringen i gästboksfilen
open (FILE,"$guestbookreal") | | die "Kan inte öppna $guestbookreal: $!\n";
@LINES=<FILE>;
close(FILE);
$SIZE=@LINES;

# Lägg in inlägg i gästboksfilen. Inlägget hamnar vid <!--start--> i HTML-koden.
open (GUEST,">$guestbookreal") | | die "Kan inte öppna $guestbookreal: $!\n";
for ($i=0;$i<=$SIZE;$i++) {
$_=$LINES[$i];
if (/<!--start-->/) {
print GUEST "<!--start-->\n";
$FORM{'kommentar'} =~ s/\cM\n/<br>\n/g;
print GUEST "$FORM{'kommentar'}<BR>\n";

if ($FORM{'url'}) {
print GUEST "<A HREF=\"mailto:$FORM{'epost'}\"><FONT COLOR=#cc6633>$FORM{'namn'}</FONT></A>, ";
}
else {
print GUEST "$FORM{'namn'}, ";
}
if ( $FORM{'epost'} ){
print GUEST "<A HREF=\"$FORM{'url'}\">";
print GUEST "<FONT COLOR=#cc6633>$FORM{'url'}</font></A>";
}
print GUEST "<BR>\n";
print GUEST "<center><IMG SRC=http://www.kristianstadshop.com/pellefant/meadows/meny/orange_pixel.gif BORDER=0 WIDTH=90% HEIGHT=1></center>\n\n";
}
else {
print GUEST $_;
}
}
close (GUEST);

# Skriv ut ett tack för meddelandet
print "Content-Type: text/html\n\n";
print "<HTML><HEAD><TITLE>East Meadows</TITLE></HEAD>\n";
print "<BODY bgcolor=#000000 text=#ff9933 link=#ff9933 vlink=#ff9933><H3><FONT FACE=Verdana>Tack för att du skrev i min gästbok</FONT></H3>\n";
print "<P><FONT FACE=Verdana>Ditt inlägg har lagts till i min gästbok</font><p>\n";
print "<A HREF=\"$guestbookurl\"><FONT FACE=Verdana color=#cc6633>Tillbaka till gästboken</A></font><p>\n";
print "<FONT FACE=Verdana>Eventuellt måste du klicka på \"reload\" för att se ändringarna</font>\n";
print "</BODY></HTML>\n";

exit;

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

http://pellefant.just.nu

emissionMedlem sedan dec. 19996 721 inlägg
#2

Om du verkligen bara vill att det senaste ska visas (de äldre försvinner helt) får du se till att bara inlägget som skrivs in hamnar i gästboksfilen. Skriptet ska alltså inte spara de gamla inläggen.

Ta bort:

open (FILE,"$guestbookreal") | | die "Kan inte öppna $guestbookreal: $!\n";
@LINES=<FILE>;
close(FILE);
$SIZE=@LINES;
# Lägg in inlägg i gästboksfilen. Inlägget hamnar vid <!--start--> i HTML-koden.
for ($i=0;$i<=$SIZE;$i++) {
$_=$LINES[$i];
if (/<!--start-->/) {
}
else {
print GUEST $_;
}
}

och byt plats på


if ($FORM{'url'}) {

och

if ($FORM{'epost'}) {

... som var fel i detta skript.

------------------
----------------------------
Gunnar Liljas - webbutvecklare
Leon Reklambyrå AB
Norrköping

FlashXMedlem sedan nov. 19991 033 inlägg
#3

En annan sak som du oxå kan ändra är

if ($allow_html != 1) {
$value =~ s/<([^>]|\n)*>//g;
}
$FORM{$name} = $value;
}

till

if ($allow_html != 1) {
$value =~ s/</</g;
$value=~ s/>/>/g;
}
$FORM{$name} = $value;
}

som jag tycker blir en lite smartare lösning.

[Redigerat av FlashX den 13 jan 2000]

RobbanMedlem sedan dec. 19992 555 inlägg
#4

emission:

Problemet med ditt förslag är att det inte bara är gamla inlägg som läses in i @LINES för att sedan skrivas ut igen, utan även resterande HTML-kod (som alltså inte kommer med nu).

Är i.a.f. så jag har uppfattat scriptet.

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

[Redigerat av Robban den 13 jan 2000]

emissionMedlem sedan dec. 19996 721 inlägg
#5

Helt riktigt. Jag tänkte att det var en sidas som skulle läggas in med SSI, men det var nog inte. Då löser man det nog snyggast med ett reguljärt uttryck som ersätter innehåller mellan en starttagg och en sluttagg. Orkar inte skriva om nu, dock. Bra att du var uppmärksam.

/G

emissionMedlem sedan dec. 19996 721 inlägg
#6
# Börja ändringen i gästboksfilen
open (FILE,"$guestbookreal") | | die "Kan inte öppna $guestbookreal: $!\n";
@LINES=<FILE>;
close(FILE);
$contents=join("",@LINES);
$contents=~ m/^(.*<!--startgb--> ).*(<!--stopgb-->.+)/is;
($before,$after)=($1,$2);

# Lägg in inlägg i gästboksfilen. Inlägget hamnar mellan <!--startgb--> och <!--stopgb--> i HTML-koden.

open (GUEST,">$guestbookreal") | | die "Kan inte öppna $guestbookreal: $!\n";

print GUEST $before;
                                       
$FORM{'kommentar'} =~ s/\cM\n/<br>\n/g;
print GUEST "$FORM{'kommentar'}<BR>\n";

if ($FORM{'epost'}) {
	print GUEST "<A HREF=\"mailto:$FORM{'epost'}\"><FONT COLOR=#cc6633> $FORM{'namn'}</FONT></A>, ";
}
else {
	print GUEST "$FORM{'namn'}, ";
}
if ( $FORM{'url'} ){
	print GUEST "<A HREF=\"$FORM{'url'}\">";
	print GUEST "<FONT COLOR=#cc6633>$FORM{'url'}</font></A>";
}
print GUEST "<BR>\n";
print GUEST "<center><IMG SRC=http://www.kristianstadshop.com/pellefant/meadows meny/orange_pixel.gif BORDER=0 WIDTH=90% HEIGHT=1></center>\n\n";

print GUEST $after;

close (GUEST);

------------------
----------------------------
Gunnar Liljas - webbutvecklare
Leon Reklambyrå AB
Norrköping

[Redigerat av emission den 14 jan 2000]

259 ms totalt · 3 externa anrop · v20260731065814-full.0e50b1ef
0 ms — hämta forumlista (cache)
128 ms — hämta statistik (db)
128 ms — hämta tråd, inlägg och bilagor (db)