I've done some similar stuff and my preference is:
  1. CGI.pm - Nice easy way of both generating HTML, parsing forms, cookies et al.
  2. CGI::Application - Great framework for providing a structured application, altho care should be taken so your application doesnt become spaghetti.
  3. HTML::Template - Easy peasy method of templating HTML.
  4. DBI - say no more.
  5. Some ancillary modules (ala Digest::MD5 etc)

I wrote my own session management, user management and access control becuase:

  • I could
  • I learned more
  • I could taylor it to specifically how/what I wanted.

    As a side (read personal) project I'm developing a web portal. Thus far it has an address book, date book, and an mp3 playlist manager. I'm also working on a photo album function, which will slot into the application framework with virtually no effort.

    The way I've structured the application is to have one CGI::Application application per concept, all in seperate directories. So I've got a directory containing the application for the address, date, and playlist functions. They are all tied together with session management and access control, ie each time a user fetches a page, the function that returns the page will check their session and whether they can access the function and branch accordingly.

    The access control is pretty handy as you can have an arbitrary level of granularity, and displays only menu functions the user has access to.

    My own session managemnt handles the authentication to a Postgres database, altho' I've only implemented a cookie based approach (and the key will last the length of the session (ie until it times out or the user logs out)). Doing your own session management is pretty damn easy to do well, altho' I'm sure you know what they say about the tried and the true. As the session management is my own module creation, It's really easy to modify (ie reissue a new key each view) without changing the upper "business" functionality.

    My form validation, ie taint checking, validity checking is done internally to each function (or method call) as i find when i'm doing form stuff its pretty specific to the function (or method).

    View management is handled via "run modes" in the CGI::Application framework.

    I found when I 1st started my project I was a bit bam-boozled by the endless possibilites etc etc, and quickly settled on this combo becuase its just so damn easy to use. Its just not rocket science.

    Good luck with the project, I'd be interested to hear what application framework you settle for, and why.

    Why use CGI::Application?
    Choosing a templating solution


    In reply to Re: More on Web Application Frameworks by Ryszard
    in thread More on Web Application Frameworks by impossiblerobot

    Title:
    Use:  <p> text here (a paragraph) </p>
    and:  <code> code here </code>
    to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.