Programming Project 2: Web-based user login
DATE DUE: Monday, May 15, 2017
Points possible: 5 points
CS-160: Software Engineering
Instructor: Robert Bruce

OVERVIEW

For this assignment you will create a CGI (common gateway interface) web-based application that allows the user to create a new user-login OR log in to an existing account. In real-world situations, you would want to communicate via the secure HTTP (https) protocol. That would require you to obtain an SSL certificate and configure Apache for SSL connections. For simplicity, you are NOT required to use secure HTTP for this assignment.

SPECIFICATIONS

New user registration

A web-based form should appear which prompts the user to enter their first and last name, a username, and a password. Your program should minimally check that the user has entered a username and password. The user is not required to enter a first name or last name (i.e. first and last name may be blank).

If the user does not enter both a username and password, the program should prompt the user to enter that minimal information.

Once a username and password are entered, the program should check if the chosen username is already taken. If the username already exists in the database, please inform the user to choose another username because their chosen username is already being used by another registered user.

User login

A web-based form should appear which prompts the user to enter their username and password.

If the user does not enter both a username and password, the program should prompt the user to enter that minimal information.

Server side authentication

Your application should perform a database query on the server side to verify the username/password entered (for existing users) matches an appropriate username and password in the database.

Your application

Upon successful login, your program should embed an encrypted session identifier token in the URL to maintain state. You should NOT use cookies to maintain state. Maintaining state is the way to remember a user who has already authenticated or logged in.

Upon successful login, your program should display a member-login screen with functionality to logout of the system (link or button), upload a new video, or play an existing videos (if exists).

Your application should be able to run on GNU/Linux using an Apache web server.

You may implement your application in most programming languages such as Perl, Python, PHP, Java, Ruby on Rails, C, or C++, etc. If your programming language doesn't appear here, ask me for approval.

There should be NO dependency on proprietary, commercial software licenses that require I purchase a license in order to verify/run the product!

SUBMITTING YOUR ASSIGNMENT

1. Please include the full names of all members of your team as a comment at the top of your application.

2. Please name your assignment programming_project_2 followed by a dot and an appropriate extension depending on the programming language used. For example, use .pl for Perl, .php for PHP, .py for Python, .cpp for C++, .c for C, etc.

LATE ASSIGNMENTS

Assignments submitted after the due date will be worth, at most, 2.5 points. Additional points will be deducted for programs not meeting the specification as outlined above.