Creating a virtual wallet to display balance in a store
It is a way much better practice to generate a new address for every new order and not per user, as this would imply address reuse for returning customers, which is generally discouraged. Then the users won't have to keep their funds on your website and will only pay the exact amount for each order.

You can take a look at these open source projects for bitcoin written in PHP for starters.