Hi James

Thanks for your realy constructive post! I'll try that out and maybe
come back with some questions (hopefully not) :-)

-- 
Regards
 Marco

Am Mo, 2004-04-19 um 19.42 schrieb James E Hicks III:
> This is the only way that I have been able to insure that the users can not 
> use any of the bad buttons (back,refresh,double-click submit). The 
> java-script solutions will only work for users that have java-script enabled.
> 
> I put the following in my authenticate.php which is included at the top of 
> every page.
> 
> authenticate.php
> <?
> if ($_POST['form_id'] != ''){
>         mysql_select_db("form_authentication");
>         $query = "select count(*) as valid_form from form_id where form_id = 
> '".$_POST['form_id']."'";
>         extract(mysql_fetch_array(mysql_query($query)));
>         if ( $valid_form < 1 ){
>                 include("warn_doubleclick.php");
>                 exit;
>         } else {
>                 mysql_select_db("form_authentication");
>                 $query = "delete from form_id where form_id = 
> '".$_POST['form_id']."'";
>                 mysql_query($query);
>         }
> }
> /*
> MORE AUTHENTICATE STUFF HERE
> */
> function create_form_id(){
>         mysql_select_db("form_authentication");
>         $new_form_id = uniqid(rand(),1);
>         $query = "insert into form_id values ( '$new_form_id' )";
>         mysql_query($query);
>         $form_field = "<input type=\"hidden\" name=\"form_id\" 
> value=\"$new_form_id\">";
>         return $form_field;
> }
> ?>
> 
> 
> Then inside every form that I want to protect from back button , refresh 
> button or double-clicking of the submit button I echo the results of 
> create_form_id inside the <form> tag. I also remember to include 
> authenticate.php which is going to actually stop the user from resubmitting 
> the same form.
> 
> <?php
> include("authenticate.php");
> include("header.php");
> echo "<form action=\"".$_SERVER['PHP_SELF']."\" method=\"POST\">";
> echo "<input type=\"text\" name=\"test\">";
> echo create_form_id();
> echo "</form>";
> include("footer.php");
> ?>
> 
> Here is an example warn_doubleclick.php that you can edit to your taste. This 
> is what the users will be redirected to if they break the button rules.
> 
> <?php
> include("header.php");
> echo ("<BR><BR><h2>You have double clicked the submit button titled<b>");
> echo ($_POST['submit']."</b> or attempted to process this form twice by using 
> the back button or the refresh button.</h2>");
> echo ("<BR><BR><a href=index.php>Return to Program</a>");
> include("footer.php");
> ?>
> 
> Here is the SQL to create necessary DB and table.
> 
> CREATE DATABASE form_authentication;
> CREATE TABLE form_id (
>   form_id varchar(50) NOT NULL default ''
> ) TYPE=MyISAM;
> 
> James Hicks

-- 
Regards
 Marco

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to