[FX.php List] Problem with creating duplicate records
Steve Hannah
shannah at sfu.ca
Fri Jul 21 17:01:26 MDT 2006
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
>
More information about the FX.php_List
mailing list