Avatar billede OWB Novice
24. juni 2002 - 11:18 Der er 2 løsninger

Ændring af gæstebogsscript

Har et gæstebogsscript fra min hoteludbyder (Scannet) som egentlig fungere udemærket. Eneste problem er at den ikke anvender dansk datoformat. Ifølge Scannet kan dette ændres i koden, jeg magter det dog ganske simpelt ikke, så derfor følgende spørgsmål.

Nogen som kan rette følgende CGI script til, således at den ved indlæget vedhæftede dato bliver formateret på dansk vis (eks. 25 juli 2002)??

I håb på hjælp, Ole.

#!/usr/bin/perl
##############################################################################
# Guestbook                    Version 2.3.1                                #
# Created 4/21/95              Last Modified 10/29/95                      #
# Scripts Archive at:          http://www.worldwidemart.com/scripts/        #
##############################################################################

# Set Variables

$guestbookurl = "http://www.jayjays.dk/log/guestbook/guestbook.html";
$guestbookreal = "d:/www2/jayjays/log/guestbook/guestbook.html";
$guestlog = "d:/www2/jayjays/log/guestbook/guestlog.html";
$cgiurl = "http://www.jayjays.dk/cgi-bin/guestbook.pl";

# Set Your Options:
$uselog = 1;            # 1 = Yes; 0 = No
$separator = 1;        # 1 = <hr>; 0 = <p>
$redirection = 0;      # 1 = Yes; 0 = No
$entry_order = 1;      # 1 = Newest entries added first;
                        # 0 = Newest Entries added last.
$allow_html = 0;        # 1 = Yes; 0 = No
$line_breaks = 1;      # 1 = Yes; 0 = No
$linkmail = 0;          # 1 = Yes; 0 = No 

# Done
##############################################################################

# Get the Date for Entry
$date = localtime;;
$shortdate = localtime;;

# Get the input
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});

# Split the name-value pairs
@pairs = split(/&/, $buffer);

foreach $pair (@pairs) {
  ($name, $value) = split(/=/, $pair);

  # Un-Webify plus signs and %-encoding
  $value =~ tr/+/ /;
  $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
  $value =~ s/<!--(.|\n)*-->//g;

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

  $FORM{$name} = $value;
}

# Print the Blank Response Subroutines
&no_comments unless $FORM{'comments'};
&no_name unless $FORM{'realname'};

# Begin the Editing of the Guestbook File
open (FILE,"$guestbookreal") || die "Can't Open $guestbookreal: $!\n";
@LINES=<FILE>;
close(FILE);
$SIZE=@LINES;

# Open Link File to Output
open (GUEST,">$guestbookreal") || die "Can't Open $guestbookreal: $!\n";

for ($i=0;$i<=$SIZE;$i++) {
  $_=$LINES[$i];
  if (/<!--begin-->/) {

      if ($entry_order eq '1') {
        print GUEST "<!--begin-->\n";
      }
 
      if ($line_breaks == 1) {
        $FORM{'comments'} =~ s/\cM\n/<br>\n/g;
      }

      print GUEST "<b>$FORM{'comments'}</b><br>\n";

      if ($FORM{'url'}) {
        print GUEST "<a href=\"$FORM{'url'}\">$FORM{'realname'}</a>";
      }
      else {
        print GUEST "$FORM{'realname'}";
      }

      if ( $FORM{'username'} ){
        if ($linkmail eq '1') {
            print GUEST " \&lt;<a href=\"mailto:$FORM{'username'}\">";
            print GUEST "$FORM{'username'}</a>\&gt;";
        }
        else {
            print GUEST " &lt;$FORM{'username'}&gt;";
        }
      }

      print GUEST "<br>\n";

      if ( $FORM{'city'} ){
        print GUEST "$FORM{'city'},";
      }
   
      if ( $FORM{'state'} ){
        print GUEST " $FORM{'state'}";
      }

      if ( $FORM{'country'} ){
        print GUEST " $FORM{'country'}";
      }

      if ($separator eq '1') {
        print GUEST " - $date<hr color=#000000 size=1 width=500 align=left>\n\n";
      }
      else {
        print GUEST " - $date<p>\n\n";
      }

      if ($entry_order eq '0') {
        print GUEST "<!--begin-->\n";
      }

  }
  else {
      print GUEST $_;
  }
}

close (GUEST);

# Log The Entry

if ($uselog eq '1') {
  &log('entry');
}

# Print Out Initial Output Location Heading
if ($redirection eq '1') {
  print "Location: $guestbookurl\n\n";
}
else {
  &no_redirection;
}

#######################
# Subroutines

sub no_comments {
  print "Content-type: text/html\n\n";
  print "<html>\n";
  print "<head>\n";
  print "</head>\n";
  print "<body bgcolor=#FFFFFF text=#000000 link=#000080 vlink=#000080 alink=#C0C0C0>\n";
  print "<p>\n";
  print "<font face=Verdana, Arial, Helvetica Size=2>\n";
  print "Kommentar mangler!<br>\n";
  print "<hr color=#000000 size=1 width=500 align=left>\n";
  print "<form method=POST action=\"$cgiurl\">\n";
  print "<table cellpadding=0 cellspacing=3 border=0 width=500><tr>\n";
  print "<td><font face=Verdana, Arial, Helvetica Size=2>Navn er skjult.</font></td>\n";
  print "<td><font face=Verdana, Arial, Helvetica Size=2><input type=hidden name=\"realname\" value=\"$FORM{'realname'}\" size=30></font></td></tr><tr>\n";
  print "<td><font face=Verdana, Arial, Helvetica Size=2>Kommentar:</font></td>\n";
  print "<td><font face=Verdana, Arial, Helvetica Size=2><textarea name=\"comments\" COLS=25 ROWS=4></textarea></font></td></tr><tr>\n";
  print "<td colspan=2>&nbsp;</td></tr><tr>\n";
  print "<td><font face=Verdana, Arial, Helvetica Size=2>&nbsp;</font></td>\n";
  print "<td><font face=Verdana, Arial, Helvetica Size=2><input type=Submit value=Send> &nbsp; <input type=Reset value=Fortryd></font></td>\n";
  print "</tr></table></form>\n";
  print "<hr color=#000000 size=1 width=500 align=left>\n";
  print "Tilbage til <a href=\"$guestbookurl\">G&aelig;stebogen</a>.\n";
  print "</body>\n";
  print "</html>\n";

  # Log The Error
  if ($uselog eq '1') {
      &log('no_comments');
  }

  exit;
}

sub no_name {
  print "Content-type: text/html\n\n";
  print "<html>\n";
  print "<head>\n";
  print "</head>\n";
  print "<body bgcolor=#FFFFFF text=#000000 link=#000080 vlink=#000080 alink=#C0C0C0>\n";
  print "<p>\n";
  print "<font face=Verdana, Arial, Helvetica Size=2>\n";
  print "Navn mangler!<br>\n";
  print "<hr color=#000000 size=1 width=500 align=left>\n";
  print "<form method=POST action=\"$cgiurl\">\n";
  print "<table cellpadding=0 cellspacing=3 border=0 width=500><tr>\n";
  print "<td><font face=Verdana, Arial, Helvetica Size=2>Navn:</font></td>\n";
  print "<td><font face=Verdana, Arial, Helvetica Size=2><input type=text name=\"realname\" value=\"$FORM{'username'}\" size=30></font></td></tr><tr>\n";
  print "<td><font face=Verdana, Arial, Helvetica Size=2>Kommentar er skjult.</font></td>\n";
  print "<td><font face=Verdana, Arial, Helvetica Size=2><input type=hidden name=\"comments\" value=\"$FORM{'comments'}\"></font></td></tr><tr>\n";
  print "<td colspan=2>&nbsp;</td></tr><tr>\n";
  print "<td><font face=Verdana, Arial, Helvetica Size=2>&nbsp;</font></td>\n";
  print "<td><font face=Verdana, Arial, Helvetica Size=2><input type=Submit value=Send> &nbsp; <input type=Reset value=Fortryd></font></td>\n";
  print "</tr></table></form>\n";
  print "<hr color=#000000 size=1 width=500 align=left>\n";
  print "Tilbage til <a href=\"$guestbookurl\">G&aelig;stebogen</a>.\n";
  print "</body>\n";
  print "</html>\n";

  # Log The Error
  if ($uselog eq '1') {
      &log('no_name');
  }

  exit;
}

# Log the Entry or Error
sub log {
  $log_type = $_[0];
  open (LOG, ">>$guestlog");
  if ($log_type eq 'entry') {
      print LOG "$ENV{'REMOTE_HOST'} - [$shortdate]<br>\n";
  }
  elsif ($log_type eq 'no_name') {
      print LOG "$ENV{'REMOTE_HOST'} - [$shortdate] - ERR: No Name<br>\n";
  }
  elsif ($log_type eq 'no_comments') {
      print LOG "$ENV{'REMOTE_HOST'} - [$shortdate] - ERR: No ";
      print LOG "Comments<br>\n";
  }
}

# Redirection Option
sub no_redirection {

  # Print Beginning of HTML
  print "Content-type: text/html\n\n";
  print "<html>\n";
  print "<head>\n";
  print "</head>\n";
  print "<body bgcolor=#FFFFFF text=#000000 link=#000080 vlink=#000080 alink=#C0C0C0>\n";
  print "<p>\n";
  print "<font face=Verdana, Arial, Helvetica Size=2>\n";

# Print Response
  print "Tak for din kommentar : )<br>\n";
  print "Du tilf&oslash;jede f&oslash;lgende:<p>\n";
  print "<b>$FORM{'comments'}</b><br>\n";

  if ($FORM{'url'}) {
      print "<a href=\"$FORM{'url'}\">$FORM{'realname'}</a>";
  }
  else {
      print "$FORM{'realname'}";
  }

  if ( $FORM{'username'} ){
      if ($linkmail eq '1') {
        print " &lt;<a href=\"mailto:$FORM{'username'}\">";
        print "$FORM{'username'}</a>&gt;";
      }
      else {
        print " &lt;$FORM{'username'}&gt;";
      }
  }

  print "<br>\n";

  if ( $FORM{'city'} ){
      print "$FORM{'city'},";
  }

  if ( $FORM{'state'} ){
      print " $FORM{'state'}";
  }

  if ( $FORM{'country'} ){
      print " $FORM{'country'}";
  }

  print " - $date<p>\n";

  # Print End of HTML
  print "<hr color=#000000 size=1 width=500 align=left>\n";
  print "Tilbage til <a href=\"$guestbookurl\">g&aelig;stebogen</a>\n";       
  print "<p>- Det er muligt at siden skal reloade/opdateres, for at se de seneste data.\n";
  print "</body></html>\n";

  exit;
}
Avatar billede jespernaur Nybegynder
24. juni 2002 - 21:00 #1
Du skal erstatte linien

$date = localtime;;


med følgende kode:


my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
my $monthname = (januar,februar,marts,april,maj,juni,
                juli,august,september,oktober,november,december)[$mon];

# short alternative, date,month,year
$date = sprintf "%d. %s %4d", $mday, $monthname, $year+1900;

# long alternative, date,month,year,hour,minute,second
$date = sprintf "%d. %s %4d %02d:%02d:%02d",
                $mday, $monthname, $year+1900, $hour, $min, $sec;

Bemærk, at jeg har vist 2 alternativer: Uden klokkeslet, eller med klokkeslet. Du kan
selv vælge, hvilket du vil bruge.

Mvh
Jesper Naur
Avatar billede thomasledet Nybegynder
24. juni 2002 - 21:09 #2
der hvor der står $date=localtime; og $shortdate<- erstat med dette
<klip>
@months = ('januar','februar','marts','april','maj','juni','juli','august','september','oktober','november','december');
my($second,$minute,$hour,$day,$month,$year) = (localtime())[0..5];
$year+=1900;
if ($second < 10) {$second = "0".$second;}
if ($minute < 10) {$minute = "0".$minute;}
if ($hour < 10) {$hour = "0".$hour;}

$date = "$day. ".@months[$month]." $year, $hour:$minute:$second";
$shortdate = "$day. ".@months[$month]." $year";
</klip>

så skulle den være i orden...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester