I am working on a script that interacts with other programs. Below is a simple script that demonstrates a problem I have run into. This simple script increments a count in a file, and allows the page visitor to reset the count. My problem is, I don't want the user to 'accidentally' reset the count by 1) reseting the count using the button, and then 2) hitting refresh on their browser. and 3) breezing past the expired page warning because they didn't stop to read it.
Is there a way to easily keep a user from being able to refresh a page after doing something where refreshing would be bad (but not at other times)? I was thinking of redirecting back to the same page again, restoring the safety of hitting refresh but I would need to pass a hidden form element too, which I've yet to figure out how to do. Can anyone help me out here? Preferably with out using cookies? Thanks.
#!perl -w use strict; use CGI qw( :standard ); use CGI::Carp qw( fatalsToBrowser ); $|=1; my $count = 0; print header, start_html('Simple Counter'), "\n"; if( -e 'cnt.tmp' and not param('Start Over') ) { open COUNT, 'cnt.tmp' or die "Failed to open cnt.tmp, $!\n"; while(<COUNT>) { if( /^\s*(\d+)\s*$/ ) { $count = $1; last } } close COUNT or die "Failed to close cnt.tmp, $!\n"; } print start_form(), "Count equals $count", br(), "\n", submit( -name=>"Again" ), submit( -name=>"Start Over", -value=>"Start Over" ), end_form(), "\n"; open COUNT, '>cnt.tmp' or die "Failed to open >cnt.tmp, $!\n"; print COUNT ++$count; close COUNT or die "Failed to close >cnt.tmp, $!\n"; print end_html();

In reply to CGI Refresh question by Adam

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.