[FX.php List] Problem with creating duplicate records

Steve Hannah shannah at sfu.ca
Sat Jul 22 02:40:48 MDT 2006


If you use the method that I suggest then the processing page would  
NEVER get reloaded because the user is never on the page.  The page  
processes and then forwards the user to another page with a new  
form.   In general, the user should never be on a "processing" page  
unless there was an error in the processing.

Best regards

Steve
On 21-Jul-06, at 5:25 PM, Bob Patin wrote:

> Steve,
>
> I think he was asking about what happens not when the FORM is  
> reloaded, but the PROCESSING page...
>
>
> On Jul 21, 2006, at 6:01 PM, Steve Hannah wrote:
>
>> This problem can be solved by carefully following the intentions  
>> of HTTP requests:
>> 1.  GET requests do not change data in the database.
>> 2.  POST requests can update data in the database.
>>
>> Hence, your forms should always be displayed by a GET request, and  
>> saved via a POST request.  When you process the form received from  
>> a POST request, you do your database updates and then forward to a  
>> new page with a GET request to show the next form.
>>
>> e.g.
>>
>> HTTP request: GET mypage.php :
>>
>> <form action="mypage_processor.php" method="POST">
>> ... a bunch of fields in the form...
>>
>> </form>
>>
>> User submits this form which sends an HTTP POST request to  
>> mypage_processor.php:
>>
>> In mypage_processor.php:
>>
>> if ( form validates ok){
>>     process the form
>>     if ( form processed ok){
>>         forward user to next form or success page:
>>         e.g.:  header('mypage2.php?message='.urlencode 
>> ('Successfully saved content')); exit;
>>     } else {
>>         forward user to failure page.
>>         e.g.:  header('my_failure_page1.php?message='.urlencode 
>> ('Failed because ...')); exit;
>>     }
>> } else {
>>     form didn't validate -- either display the form again right  
>> here with info about which fields were
>>    input incorrectly -- or forward back to the original form for  
>> the user to fill in... probably easier to
>>    just display it here again:
>>
>>    include('mypage.php');
>>
>> }
>>
>> This way, if the user reloads a form, it just reloads the form -  
>> and doesn't trigger the processing information.
>>
>> Hope this helps.
>>
>> ----------------------------------------
>> Steve Hannah
>> Web Services Developer
>>
>> Faculty of Applied Sciences
>> Simon Fraser University
>> shannah at sfu.ca
>> 604-268-7228
>> Homepage: http://www.sjhannah.com
>> --
>> Need to build a database driven web application quickly?
>> Try Dataface: http://fas.sfu.ca/dataface
>>
>>
>>
>> On 21-Jul-06, at 2:45 PM, Jerry Do wrote:
>>
>>> Hello all,
>>>
>>> I am new to fx.php and php.  I have problem users create  
>>> duplicate records
>>> by reload the response page.
>>> For example:
>>> I have a form name "formA" and the ACTION ="formA_response.php".
>>> When the user click submit, the form will send all the  
>>> information to
>>> formA_response.php.
>>> The formA_response.php page is the page to create new record.  I  
>>> noticed
>>> that if a user reload formA_reload.php,  new record will be  
>>> created.  Is
>>> there a good method to prevent the user reload the page or going  
>>> to that
>>> page?
>>> I am thinking that I might send to a page that will create the  
>>> record then
>>> close that page after the record created.  However, I am not sure  
>>> it will
>>> work or how to do write it yet.
>>>
>>> Any input is welcome.
>>>
>>> Thank you in advance,
>>>
>>> _______________________________________________
>>> FX.php_List mailing list
>>> FX.php_List at mail.iviking.org
>>> http://www.iviking.org/mailman/listinfo/fx.php_list
>>>
>>
>> _______________________________________________
>> FX.php_List mailing list
>> FX.php_List at mail.iviking.org
>> http://www.iviking.org/mailman/listinfo/fx.php_list
>
> _______________________________________________
> FX.php_List mailing list
> FX.php_List at mail.iviking.org
> http://www.iviking.org/mailman/listinfo/fx.php_list
>



More information about the FX.php_List mailing list