Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

If I have a PERL/cgi based website, where can I store data?

Replies are listed 'Best First'.
Re: where store data with PERL/cgi?
by mirod (Canon) on May 26, 2002 at 07:54 UTC

    Basically anywhere but in the document tree (where it could be accessed by someone guessing the filename). I tend to use /web as the root (documents are in /web/infptree) and to store the data in /web/data.

      hmmm,

      If /web is your document root, wouldn't it be better to store the data outside the public realm?, ie /infptree instead?

      Obviously it may not matter for your specific case, but generally I think it's a better idea...

      .02

      cLive ;-)

      --
      seek(JOB,$$LA,0);

Re: where store data with Perl/cgi?
by cjf (Parson) on May 26, 2002 at 14:03 UTC

    Do you mean how can you store the data? As in, you have a CGI script that takes user input and stores it somewhere in your document tree?

    Update: Assuming (hint: reply and clarify your question) you're asking how to store data, this will record the value of the name parameter submitted to your script in a text file:

    #!/usr/bin/perl -wT use strict; use CGI; my $q = new CGI; my $name = $q->param("name"); unless ($name) { error("No name given"); } open DATA, ">>log.txt" or die "Can't open file: $!\n"; print DATA "$name\n"; close DATA; sub error { my $error = shift; print $q->header("text/html"), $q->start_html("Error"), $q->h1("Error"), $q->p("$error"), $q->end_html; }

    You should also add some checks on the size/contents of $name to make sure your server isn't filled up with someone's life story.