Database e Web - Esercitazioni ASP - Andrea Proli proliand@csr.unibo.it Laboratorio di Basi di Dati A.A. 2005/2006 Obiettivo dell esercitazione L obiettivo finale dell esercitazione è quello di creare un semplice prototipo di sito di e-commerce che offra le seguenti funzionalità: Interfaccia generica: Autenticazione (login, logout) Interfaccia clienti: Visualizzazione elenco prodotti Gestione carrello della spesa Interfaccia amministratori: Gestione elenco clienti Gestione elenco prodotti 2
Creazione tabella utenti Creare sul database SISINF la tabella: USERS(username, password, accounttype, name, surname) Tutti gli attributi sono campi di testo Popolare la tabella USERS con un account di amministratore (accounttype = A ) 3 Sistema di autenticazione Creare una pagina ASP (per ora vuota) main_customer.asp, e una pagina ASP (per ora vuota) main_admin.asp Creare una pagina login.htm contenente un form con campi per username e password, e una pagina authenticate.asp che riceve i dati del form Authenticate.asp verifica che le credenziali siano valide. Se le credenziali sono valide assegna come valore della variabile di sessione login lo username utilizzato per il login, quindi redirige l utente alla pagina main_customer.htm o main_admin.htm (a seconda del tipo di account), mostrando un messaggio di benvenuto Se le credenziali non sono valide Se le credenziali non sono valide authenticate.asp redirige di nuovo l utente alla pagina login.htm 4
Controllo degli accessi Le pagine ASP main_cliente.asp e main_admin.asp non dovrebbero essere accessibili a chi non ha effettuato il login Entrambe devono contenere, come prologo, una sezione di codice script che verifichi se la variabile di sessione login assume un valore non nullo e che, in caso contrario, rediriga l utente alla pagina login.htm Siccome il codice che effettua la verifica e la redirezione farà da prologo a molte altre pagine, creare un nuovo file access_control.asp e includere il codice in tale file Tutte le pagine ASP ad accesso limitato dovranno utilizzare la direttiva #include per incorporare il file access_control.asp 5 Visualizzazione elenco utenti Creare il file show_users.asp in modo che visualizzi una riga per ogni utente (record della tabella USERS) all interno di una tabella HTML La tabella HTML deve contenere una colonna per ogni campo della tabella USERS. Ogni colonna deve avere un intestazione che riporti il nome del campo corrispondente Inserire nel file main_admin.asp un link al file show_users.asp 6
Rimozione utente Creare il file remove_user.asp per rimuovere un account dalla tabella USERS. Anche questo file ASP deve implementare il controllo degli accessi Lo username dell account da rimuovere viene passato in input alla pagina ASP tramite QueryString come valore del parametro username Verificare che l account che si desidera rimuovere sia differente da quello attualmente loggato (un utente non può rimuovere se stesso) In caso non lo sia, interrompe la sessione e redirige l utente alla pagina login.asp. Altrimenti, ultimata la rimozione, redirige l utente alla pagina show_users.asp 7 Modifica pagina utenti Modificare il file show_users.asp in modo che, per ogni riga della tabella, il valore del primo campo (username) sia un link (il cui testo è ancora lo username) che procede all eliminazione dell utente corrispondente Per fare ciò è sufficiente che il link abbia come target la pagina remove_user.asp, e che passi tramite query string il parametro username=. Ad esempio: <A HREF= remove_user.asp?username=proliand >proliand</a> 8
Aggiunta utenti - form Creare una nuova pagina HTML dal nome add_user_form.htm che contenga un form in cui inserire i dati del nuovo utente: Casella di testo per specificare lo username Casella di testo di tipo password per specificare la password Radio button o checkbox per scegliere il tipo di account Casella di testo per specificare il nome Casella di testo per specificare il cognome Il submit del form deve essere effettuato con metodo POST e la pagina a cui inoltrare i parametri deve essere add_user.asp Inserire sia in fondo alla pagina show_users.asp che nella pagina main_admin.asp un link (o un pulsante) che consenta di accedere alla pagina add_user_form.htm 9 Aggiunta utenti - elaborazione Creare un nuovo file ASP dal nome add_user.asp, che implementa il controllo degli accessi ed elabora i parametri del form in add_user_form.htm Il codice all interno del file deve comporre dinamicamente una query di tipo INSERT che aggiunga all interno della tabella USERS un record corrispondente al nuovo utente Se alcuni dati essenziali (username, password, accounttype) sono mancanti, la pagina ASP deve redirigere nuovamente l utente alla pagina add_user_form.htm Al termine dell inserimento, l utente deve essere rediretto alla pagina show_users.asp 10
Creazione tabella prodotti Creare sul database SISINF la tabella: PRODUCTS(id, name, price, maker, description) I campi id e price sono numerici, tutti gli altri sono campi di testo Popolare la tabella PRODUCTS insieme di prodotti (opzionale) con un 11 Visualizzazione prodotti Creare il file show_products.asp in modo che visualizzi una riga per ogni prodotto (record della tabella PRODUCTS) all interno di una tabella HTML La tabella HTML deve contenere una colonna per ogni campo della tabella PRODUCTS. Ogni colonna deve avere un intestazione che riporti il nome del campo corrispondente Inserire sia nel file main_admin.asp che nel file main_customer.asp un link a show_products.asp 12
Rimozione prodotto Creare il file remove_product.asp per rimuovere un prodotto dalla tabella PRODUCTS. Anche questo file ASP deve implementare il controllo degli accessi L ID del prodotto da rimuovere viene passato in input alla pagina ASP tramite QueryString come valore del parametro productid Ultimata la rimozione, l utente viene rediretto alla pagina show_products.asp 13 Modifica pagina prodotti Modificare il file show_products.asp in modo che, soltanto se l utente attualmente loggato è un amministratore (accounttype = A ), per ogni riga della tabella il valore del primo campo (ID) sia un link (il cui testo è sempre l ID) che innesca l eliminazione del prodotto corrispondente Per fare ciò è sufficiente che il link abbia come target la pagina remove_product.asp, e che passi tramite query string il parametro productid=. Ad esempio: <A HREF= remove_product.asp?productid=140 >140</A> 14
Aggiunta prodotti - form Creare una nuova pagina HTML add_product_form.htm che contenga un form in cui inserire i dati del nuovo prodotto: Casella di testo per specificare l ID Casella di testo per specificare il nome Casella di testo per specificare il prezzo Casella di testo per specificare il produttore Casella di testo per specificare la descrizione Il submit del form deve essere effettuato con metodo POST e la pagina a cui inoltrare i parametri deve essere add_product.asp Inserire sia in fondo alla pagina show_products.asp (ma solo se l utente attualmente loggato è amministratore) che nella pagina main_admin.asp un link (o un pulsante) che consenta di accedere alla pagina add_product_form.htm 15 Aggiunta prodotti - elaborazione Creare un nuovo file ASP dal nome add_product.asp, che implementa il controllo degli accessi ed elabora i parametri del form in add_product_form.htm Il codice all interno del file deve comporre dinamicamente una query di tipo INSERT che aggiunga all interno della tabella PRODUCTS un record corrispondente al nuovo prodotto Se alcuni dati essenziali (id, nome, prezzo) sono mancanti, la pagina ASP deve redirigere nuovamente l utente alla pagina add_product_form.htm Al termine dell inserimento, l utente deve essere rediretto alla pagina show_products.asp 16
Gestione carrello della spesa Ogni cliente (accounttype = C ) ha a disposizione un carrello della spesa all interno del quale inserire uno più ordini Ciascun ordine specifica il prodotto d interesse e la quantità di pezzi richiesta Per ogni cliente deve essere possibile visualizzare lo stato del carrello, aggiungere ordini, eliminare ordini, modificare le quantità richieste per ciascun prodotto Gli account di amministrazione non sono associati ad alcun carrello 17 Creazione tabella carrello Creare sul database SISINF la tabella: CART_ITEMS(product, customer, price, quantity) FK: product REFERENCES PRODUCTS FK: customer REFERENCES USERS Il campo customer è testuale, tutti gli altri sono campi numerici Popolare la tabella CART_ITEMS con un insieme di prodotti (opzionale) 18
Visualizzazione carrello Creare il file show_cart.asp in modo che visualizzi, in una tabella HTML, una riga per ogni ordine effettuato dal cliente attualmente loggato. La pagina deve recare l intestazione: Carrello del cliente <nome e cognome utente> La tabella HTML deve contenere le seguenti colonne, con relativa intestazione: Nome prodotto Quantità ordinata Prezzo unitario Inserire nel file main_customer.asp un link a show_cart.asp 19 Aggiunta ordini - form Creare una nuova pagina HTML add_cart_item_form.htm che contenga un form in cui inserire i dati del nuovo ordine: Listbox per selezionare il prodotto (per nome) Casella di testo per specificare la quantità Il submit del form deve essere effettuato con metodo POST e la pagina a cui inoltrare i parametri deve essere add_cart_item.asp Inserire in fondo alla pagina show_cart.asp un link (o un pulsante) che consenta di accedere alla pagina add_cart_item_form.htm 20
Aggiunta ordini - elaborazione Creare un nuovo file ASP dal nome add_cart_item.asp, che implementa il controllo degli accessi ed elabora i parametri del form definito in add_cart_item_form.htm Il codice all interno del file deve comporre dinamicamente una query di tipo INSERT che aggiunga all interno della tabella CART_ITEMS un nuovo record che rappresenti l ordine di una certa quantità di prodotto (parametri in input) da parte del cliente attualmente loggato Se il dato sulla quantità risulta mancante, la pagina ASP deve redirigere nuovamente l utente alla pagina add_cart_item_form.htm Al termine dell inserimento, l utente deve essere rediretto alla pagina show_cart.asp 21 Rimozione ordine Creare il file remove_cart_item.asp per rimuovere un ordine dalla tabella CART_ITEMS. Anche questo file ASP deve implementare il controllo degli accessi L ordine da rimuovere viene identificato inviando in input alla pagina ASP l ID del prodotto tramite QueryString come valore del parametro productid, mentre il cliente che ha effettuato l ordine risulta essere quello attualmente loggato Ultimata la rimozione, l utente viene rediretto alla pagina show_cart.asp 22
Modifica pagina carrello Modificare il file show_cart.asp in modo da aggiungere alla tabella HTML una colonna contenente un link rimuovi in corrispondenza di ciascuna riga, che consenta di rimuovere l ordine corrispondente Per fare ciò è sufficiente che il link abbia come target la pagina remove_cart_item.asp, e che passi tramite query string il parametro productid=. Ad esempio: <A HREF= remove_cart_item.asp?productid=140 >remove</a> 23