On Jun 21, 2008, at 2:07 PM, PaulCheung wrote:

Hi

Can anybody suggest a way around this problem or point me in the right direction?

I have a genuinely legitimate reason to disable the browser back button, or at least the pages that have anything to do with the PHP application I am working on.

Here is the scenario
A user likes the on-line service provided and decides to purchase it using one of the standard on-line payment methods, typically PayPal.

Once payment has been made, confirmed and received, the user is directed to an customer account creation page. Here the user enters the usual standard account details such as Name, Address, Telephone Number, User-Id, Password and so on.


Why do you make them wait to create their account until after they pay? Aren't Name, Address, and phone necessary for payment processing anyway?


The application then generates an access code, which is automatically emailed from the application to the customer. As a precaution all PHP sessions variables are cleared, the "customer account creation page" is cleared and the user steered away from the signup part of the application to Google's main navigation page (this last bit being for testing purposes).

A precaution against what?


Here in lays the problem. After initial creation of the account code and when the back button is pressed a few times, the user eventually return to the "customer account creation page". Which is the step immediately following payment validation. At this point, if the customer wants to create another new account all she or he has to do is, fill it the form once more, press submit and another new account is created. If the user just keeps doing this, he or she just keeps on creating new accounts.

I assume you keep some record of the payment, that has some identifier. Like maybe a primary key on some "payments" table in a database. So why not associate accounts with payment_ids, and force accounts to have a unique payment id? Adding that sort of simple rule to the account-creation process would solve things. If someone backs up and tries to come through again, you don't create a second account, you just tell the user "Nice try, buddy..."


I have tried to disable the browser back button; but am unable to. I have researched JavaScript solutions and learnt, if the user turns off JavaScript, that is that.

Of course.

You're trying to solve an authorization problem at the user interface level. If something is supposed to be impossible, it's better to make the underlying model or business logic enforce the model. Trying to enforce it by tightly controlling stuff that happens in the user's browser is ineffective, because you don't control the user's browser. But you do control what happens on the server. And you can make sure the server only allows one account per payment in just a few lines of code.

_______________________________________________
New York PHP Community Talk Mailing List
http://lists.nyphp.org/mailman/listinfo/talk

NYPHPCon 2006 Presentations Online
http://www.nyphpcon.com

Show Your Participation in New York PHP
http://www.nyphp.org/show_participation.php

Reply via email to