[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