PHP: form HTML, database, sessione Teoria da conoscere: spunti per lo studio • • • • • • • • • conoscere la differenza fra pagine web statiche e dinamiche motivare la necessità di un server web per elaborare le pagine web dinamiche differenza fra i metodi POST e GET nella richiesta di una pagina web. In particolare conoscere come vengono passati dei parametri tramite metodo GET direttamente da url Saper costruire un url GET con parametri (nome variabile e valore) dati in modo da creare dei semplici link form HTML: • attributi action e method del tag form • principali tipi di input (input text, password , checkbox, radio, textarea, reset, submit , select(menù a tendina) ) • necessità di un nome per ogni variabile • gestione di input multipli come vettore (per i checkbox o i menù a tendina a selezione multipla) sintassi minima per la creazione di una pagina php: tag <?php …. ?> e tag rapidi per l'inserimento del valore di una variabile in codice html : <?=$VARIABILE?> passaggio di parametri da form tramite il vettore $_REQUEST[ “nomevariabile” ] connessione ad un database MYSQL • creazione della connessione: mysql_connect(“host”, “user”, “password”); • selezione del database: mysql_select_db(“nome_database”); • esecuzione di una query: $query = "SELECT * FROM tabella_esempio"; $result=mysql_query($query); • inserimento,aggiornamento e rimozione di un record dal database (uso dei comandi SQL insert, update, delete e della funzione php mysql_query($query); La query potrebbe essere costruita concatenando dati provenienti da un form html. Es: $query= ”SELECT * FROM utenti WHERE username='” . $_REQUEST[“utente”] . ”' AND password='”.$_REQUEST[“password”] . ”';” ;ù • estrazione e stampa dei dati di una tabella con cicli for e foreach: • funzione $num=mysql_num_rows($result); • funzione $row=mysql_fetch_assoc($result); • impaginazione della tabella con nome dei campi nell'intestazione • aggiunta di un link ad una pagina di modifica del record e ad una di eliminazione tramite passaggio della chiave primaria come variabile GET gestione della sessione con il php, ovvero come creare una pagina di login e altre pagine ad accesso riservato solo a persone accreditate • uso della funzione session_start(); per attivare o ripristinare una sessione attiva • uso della funzione session_destroy(); per eliminare una sessione, ovvero per causare il logout • uso della variabile $_SESSION[“...”] per memorizzare dati relativi all'utente • esempio con • semplice pagina html con form di login che rimanda alla seguente • pagina php di login che verifica le credenziali inviati dal form. Se tali credenziali (username e password) coincidono con quelle richieste ( con quelle di una variabile PHP definita dal programmatore, ovvero ad un record presente in apposita tabella utenti di un database mysql) imposterà la una variabile $_SESSION[“abilitato”]=1. In caso contrario la sessione verrà resettata con session_destroy(); e verrà comunicato un messaggio di errore. • pagina di logout: verrà semplicemente richiamata la funzione session_destroy(); • pagina ad accesso riservato: verrà innanzitutto ripristinata la sessione (se esistente) con session_start(); Quindi nel caso la suddetta variabile $_SESSION[“abilitato”]==1 esista sia uguale ad 1, l'utente sarà accreditato e potrà visualizzare la pagina. In caso contrario anziché stampare la pagina verrà comunicato un messaggio di errore. Conoscenza minima del linguaggio SQL: in particolare di comandi CREATE TABLE, INSERT, UPDATE, DELETE, SELECT NB: su claroline vi sono due dispense integrative con spiegazione ed esempi, oltre ai già noti esempi già caricati sul sito Spunti per progetto finale Devi predisporre un'applicazione per la gestione della vendita di libri usati. • predisponi una tabella con l'elenco dei libri in vendita (codice_univoco_libro, codice_ISBN, titolo, autore, editore, prezzo, email_venditore, venduto_si_no) ed una con l'elenco delle prenotazioni (email_acquirente, data_ora, codice_libro) • predisponi due pagine (una per il form html, una in php per inserire il record) per inserire un nuovo libro in vendita • predisponi una pagina per mostrare l'elenco dei libri in vendita, senza mostrare l'indirizzo email del venditore. In tale pagina per ogni record dovrà anche comparire un link per l'acquisto del libro: tramite link con passaggio di parametri con metodo GET (es: <a href='compera.php?idlibro=234'>Compra</a> ) ridirigere ad una pagina con form per la prenotazioni dell'acquisto. Il campo idlibro dovrà risultare precompilato, ovvero memorizzato in variabile input di tipo hidden. • un'ulteriore pagina servirà per inserire la richiesta di acquisto del precedente form nel database • creare una prima pagina con un form per l'inserimento dell'email del venditore. Una seconda pagina mostrerà le richieste di acquisto di tale venditore. • modificare l'applicazione aggiungendo una tabella con campi: email_venditore, password. L'accesso all'elenco delle richieste di acquisto sarà visibile solo specificando, oltre all'indirizzo email, anche la password corretta • perfezionare il punto precedente implementando un sistema per la gestione della sessione. Sarà creata, oltre che una pagina per il login e per il logout, anche una pagina per la registrazione di un nuovo utente