The objective of the term project is to build a simple E-commerce website by integrating client and server scripting. The website you designed should be published online (student.cse.fau.edu) and is able to support customer browsing, item selection, information collection across webpages (so called shopping cart), and server side form processing (Shoppig cart is a series of scripts that keep track of items a visitor picks to buy from your site until they proceed to the "checkout").
1) Your website should have a main page, which provides a simple introduction to the website. This main page should have a background, at least one image, and some text descriptions.
2) Your website should provide separated webpages to introduce items you intend to sell online (books, dvds, tools etc.). Each item should have at least one picture and some text descriptions (20 words or more), along with the price for each item. For each listed item, you should allow user to specify the numbers he/she intends to buy. In addition, you should also provide a "Add to cart" link to add this item (along with the user specified numbers) to the shopping cart.
3) Your website should have at least three separated pages to introduce itmes (with each page containing at least two items). Each page should have links to the next (or the previous) page. Each separated page should have a "check out" link for users to check out and make payment at any time. Each page should also have a "Empty shopping cart" link (or a button), which empties the whole shopping cart after the user the link.
4) After users click "Add to cart" you should use cookie or session control to add the current item to the shopping cart and update the corresponding information (Please refer to the PhP shopping cart lectures for details)
5) After users click "check out", you should collect all items users selected from different pages, and show the name of the item(s), the number of each items, and the total cost on the screen (Please refer to the PhP shopping cart lectures for details).
6) In the "check out" page, you should provide a form to collect customer information (name, shipping address, and phone number). This form should allow users to input their credit card information. You should define a regular expression pattern to make sure (1) customer name only contains upper/lower case letters, comma, and peroid, and (2) the credict card field contains exactly sixteen digits.
7) After the users click the "Submit Order" button, your server should collect the information from the form and prepare/save all information into a text file. Meanwhile, your server should generate a unique random confirmation number with 10 letters (you need to make sure that no two orders share one confirmation number), and send the information back to the client and let users know that their order has been processed.
8) In the main page, you should provide a simple query page to let users query order information by using their confirmation number. Once users sumit a confirmation number and find the order in the database, you should show all details (user name, credit card, number of items, confirmatio number etc.) on the screen (in a table). Otherwise, just remind the users that the confirmation number does not exist!
9) Once the user successfully retrieves a transaction (using the random confirmation number), you should allow uses to cancel the order and/or to modify any part of the order. For ex, users can choose to modify the number of items, payment information etc., and resubmit the order to the server. The modified transaction should have a new confirmation number, and server should send new confirmation number to the users once the revision is done (Your system should automatically mark the old order as "Cancelled").
10) Please note that all orders should be saved in your database (or file), even if the ones which were cancelled. If users query a cancelled order (using the confirmation number), your system should still show the order details, but highlight that the order was cancelled (A cancelled order cannot be modified!).