Avatar billede computopic Nybegynder
14. maj 2001 - 17:56 Der er 3 kommentarer og
1 løsning

Indsamling af informationer ..

Jeg skal lave et spørgesmema, og ville gerne have alle de indsamlede informationer ned i en txtfil på serveren.. ville helst at informationerne kunne indskrives på en htmlside via forms... hvordan kan dette gøres?
Mvh
Computopic
Avatar billede sbm Nybegynder
14. maj 2001 - 20:14 #1
Du laver blot en helt alm. html-side med en form der rummer alle de indtastningsfelter folk skal taste ind.

Du erklærer en <form> hvor action er sat til at pege på dit cgi-program. Eksempel:

<form action=\'/cgi-bin/dataindsamling.cgi\' method=post>

...hvis dit script vel at mærke hedder dataindsamling.cgi og ligger i dit cgi-bin

Dit perl-program kunne så eksempelvis se således ud:

#!/usr/bin/perl

use strict; # Kun hvis du plejer at bruge strict. Den kan fjernes.

###################### main #####################
print \"Content-type: text/html\\n\\n\";
my %form;
%form = &hentCgi();
&skrivTilFil(\"data.txt\");
print \"<html><head><title>Tak for dit input</title></head><body>\\n\";
print \"Mange tak for dit input. Dit indl&aelig;g er registreret\\n\";
print \"</body></html>\\n\";


################## SUB RUTINER ###################
# hent cgi parametre
sub hentCgi {
  my $buffer;
  if ( $ENV = $ENV{\"REQUEST_METHOD\"} =~ m/GET/i ) {
    $buffer = $ENV{\"QUERY_STRING\"};
  }
  elsif ( $ENV{\"REQUEST_METHOD\"} =~ m/POST/i ) {
    read ( STDIN, $buffer, $ENV{\"CONTENT_LENGTH\"} );
  }
  my @pairs = split(/&/, $buffer);
  my %cgiform;
  foreach (@pairs) {
    $_ =~ tr/+/ /;
    $_ =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack(\"C\", hex($1))/eg;
#    $_ =~ s/([;<>\\*\\|\\`&\\$!\\#\\(\\)\\[\\]\\{\\}:\\\'\\\"])/\\\\$1/g;
    my ($name, $value) = split(/=/, $_, 2);
    $cgiform{$name} = $value;
  }
  return %cgiform;
}#hentCgi

#################################
# Skriver til den parameterangivne fil
sub skrivTilFil {
  open FIL \">>$_[0]\" || &fejlMeddelelse(\"Skrivefejl\",\"Kunne ikke åbne datafilen $_[0]\");
 
  # Her skriver du alle dine ønskede parametre ned i filen.
  # Her er et par eksempel-linier.

  print FIL $form{\'navn\'} . \"\\n\";
  print FIL $form{\'gadenavn\'} . \" \" . $form{\'husnr\'} . \"\\n\";
  print FIL $form{\'parameter3\'} . \"\\n\";
  print FIL $form{\'parameter4\'} . \"\\n\";
  close (FIL);
}

#####################################
# Udskriver en fejlmeddelelse, og lukker programmet.
sub fejlMeddelelse {
  print \"<html><head><title>Fejl</title></head><body>\\n\";
  print \"<h1>$_[0]</h1>\\n\";
  print \"$_[1]\\n\";
  print \"</body></html>\\n\";
  exit(0);
}


Det burde gøre det. Jeg har ikke lige syntaks-checket det her, da jeg ikke har mulighed for at køre perl på denne maskine. :-)

Du må jo skrive hvis der er problemer.
Avatar billede sbm Nybegynder
22. maj 2001 - 13:05 #2
Blev dit problem løst?
Avatar billede computopic Nybegynder
22. maj 2001 - 21:11 #3
Jeg afprøver det hurtigst muligt når jeg kommer nær serveren.. nok imorgen.. der vender jeg tilbage!
Avatar billede computopic Nybegynder
24. juli 2001 - 14:05 #4
afsluttet.. anden løsning fundet
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