Procedura di login e sessione

Documenti analoghi
PHP. A. Lorenzi, R. Giupponi, D. Iovino LINGUAGGI WEB. LATO SERVER E MOBILE COMPUTING Atlas. Copyright Istituto Italiano Edizioni Atlas

RELAZIONE SCRITTA RELATIVA AL PROGRAMMA GESTIONE MEDIAWORLD

Spiegazioni esercizio Gestione Tabella con PHP e MySQL

Connessione con MySQL

Laboratorio di Progettazione Web

PHP e MySQL. Scripting server-side per accesso a DB MySQL

Per poter interagire con un database in rete mediante uno script php bisogna. innanzitutto cerare una connessione. Ciò si ottiene mediante la funzione

Architettura a tre livelli (1)

Introduzione a PHP Gestione dei Dati e della Conoscenza

Lavorare con MySQL Parte Seconda.

Cookie e Webstorage. Vediamo ora i metodi dell oggetto localstorage. Per memorizzare un valore si utilizza il metodo setitem:

Obiettivo dell esercitazione

Laboratorio Progettazione Web PHP e MySQL - Lezione 9. Andrea Marchetti IIT-CNR andrea.marchetti@iit.cnr.ita 2011/2012

PHP E MYSQL CREAZIONE DI UN NUOVO DATABASE DAL PHPMYADMIN

Corso di Sicurezza Informatica. Sicurezza del software. Ing. Gianluca Caminiti

La principale particolarità del web dinamico è la possibilità di variare i contenuti delle pagine in base alle richieste degli utenti.

Utilizzare PHP 5. Le variabili GET e POST

Programmazione Web. Laboratorio 4: PHP e MySQL

Corso di PHP. Prerequisiti. 6.1 PHP e il web 1. Conoscenza HTML Tecnica della programmazione Principi di programmazione web

Sicurezza Informatica: Tecniche di SQL INJECTION

Laboratorio di Tecnologie Web Laurea in Scienze e Tecnologie Multimediali

1) Il client(browser utilizzato) invia al server i dati inseriti dall utente. Server

Mantenimento dello stato

RELAZIONE RELATIVA ALLA GESTIONE DEL SITO DI E-COMMERCE

Corso di PHP. Prerequisiti. 6.2 PHP e il web 2. Conoscenza HTML Tecnica della programmazione Principi di programmazione web

Procedura di Registrazione. Portale ClicLavoro

Guida introduttiva al PHP

Laboratorio Progettazione Web PHP e MySQL - Lezione 9. Andrea Marchetti IIT-CNR andrea.marchetti@iit.cnr.ita 2012/2013

RELAZIONE TECNICA GESTIONE CARTE DI CREDITO. a cura di EMANUELE CESARI

Progetto LiberA. Studente/Relatore: Antonio Zambito Matricola: 124/1032 CdL: Informatica (0124) Prof.: Raffaele Montella

Relazione scritta relativa alla gestione del sito E-Commerce MediaWorld

scrivere window.alert(). 2 Nell esempio sarebbe scritto solo var hello, senza pertanto attribuire alla variabile hello alcun valore

ESAME DI STATO DI ISTITUTO TECNICO INDUSTRIALE CORSO SPERIMENTALE Progetto ABACUS SIMULAZIONE PROVA SCRITTA DI INFORMATICA

MY SQL Guida MySQL di base

qwertyuiopasdfghjklzxcvbnmq ertyuiopasdfghjklzxcvbnmqwer tyuiopasdfghjklzxcvbnmqwerty

Obiettivi d esame PHP Developer Fundamentals on MySQL Environment

RELAZIONE SCRITTA RELATIVA AL PROGRAMMA DI GESTIONE SITO E-COMMERCE

PHP 5. PHP ed i database. Database e tabelle. Struttura di un DB relazionale. Accesso a database

Istruzioni per la gestione della password personale

MySQL Database Management System

bool mysql_select_db([string database_name [,resource link_identifier]]) Connessione ad un server MySQL vuole conettere

Anno 2013 Informatica ABACUS

BASI DI DATI Cos è il PHP. Cos è il PHP. Esercitazione su PHP & MySQL

Laboratorio Progettazione Web PHP e MySQL. Andrea Marchetti IIT-CNR 2014/2015

Esercitazione 8. Basi di dati e web

Interazione con l utente : i moduli.

Esercizi su JavaScript, DOM e Web Storage

PORTALE DEI SERVIZI ART MANUALE UTENTE PROCEDURA DI ACCREDITAMENTO

FAQ. Guida all inserimento di una domanda F.A.Q.

Laboratorio Progettazione Web PHP e MySQL. Andrea Marchetti IIT-CNR 2016/2017

PORTALE DEI SERVIZI ART CONTRIBUTO PER IL FUNZIONAMENTO DI ART MANUALE UTENTE PROCEDURA DI ACCREDITAMENTO E DI ASSOCIAZIONE ALL AZIENDA

1. (6 punti) Spiegare il significato, in modo dettagliato, del pezzo di codice seguente di una servlet:

APPUNTI DI PHP : V INFORMATICA SEZIONE G

DATEV KOINOS Azienda Cloud. Guida introduttiva

PHP: form, cookies, sessioni e. Pasqualetti Veronica

Guida a PHP. Primi esempi

Laboratorio di Sistemi Autenticazione utente mediante MySQL Jsp [Java]

Laboratorio Progettazione Web PHP e MySQL. Andrea Marchetti IIT-CNR 2013/2014

Corso di Web Programming

Dott.ssa Adriana Pietramala. Dott.ssa Maria Vittoria Avolio

04/05/2011. Lezione 6: Form

RELAZIONE PROGETTO DATABASE GESTIONE BIBLIOTECA PERSONALE

Indice Configurazione di PHP Test dell ambiente di sviluppo 28

- introduzione - il linguaggio di scripting - interazione con gli oggetti. - interazione con DB - gestione delle sessioni

PHP 5. Accesso a database

Perchè un database? Perchè un database? Tipi di DataBase. Scegliere un database. ! Sicurezza. ! Evitare la ridondanza. ! Architettura multilivello

HTML e interattività FORM

Istituto Tecnico Industriale Statale Dionigi Scano Cagliari. Candidato: Medda Daniele Classe 5ª C Informatica Anno scolastico 2013/2014.

Un client su arduino invia i dati acquisiti ad un database

Portale Servizi ISP Manuale utente SOMMARIO

Portale Edicola CARD - Manuale Utente.


Sistema di Teleraccolta EMITTENTI

PHP e MySQL. Guida scaricata da

Corso di Informatica. Prerequisiti. Modulo T3 B3 Programmazione lato server. Architettura client/server Conoscenze generali sui database

Progetto CSP: Innovation & Creativity for School. Istituto Tecnico Industriale Statale Giulio Cesare Faccio Vercelli Gruppo 5 ELETTRONICI

PHP Survival Kit (Ovvero gestire un database MySQL tramite PHP)

Esercizi ed appunti PHP

Costruzione di Sit Web con PHP e MySQL. Lezione 7 - Esercitazione - Introduzione a MySQL: le tabelle, i tpi di dato, le query

Ministero dell Istruzione, dell Università e della Ricerca

Autenticazione in PHP.

19. LA PROGRAMMAZIONE LATO SERVER

Creare l array presentato nei lucidi ([pippo, pluto, etc])

Esame di stato 2006 e-learning

D B M G Il linguaggio HTML

FONTUR MANUALE UTENTE

--- PREMESSE INTRODUZIONE. .:luxx:.

Sistema IAM REGISTRAZIONE UTENZA GUIDA OPERATIVA PER L UTENTE. 23 dicembre 2016

Ministero dell Istruzione dell Università e della Ricerca M070 ESAME DI STATO DI ISTITUTO TECNICO INDUSTRIALE

@2011 Politecnico di Torino 1

M070 ESAME DI STATO DI ISTITUTO TECNICO INDUSTRIALE

Servizio Conservazione No Problem

Manuale operativo di amministrazione del Portale Aziende BPM

Esercitazione 1 SQL: DDL e DML di base

Manuale Utente Guglielmo SmartClient

PHP. Per poter interagire con i dati che si trovano sul server remoto occorrono strumenti server-side.

MODULO 1 PARTE 3. Programmazione (scripting) server-side con PHP 3.c Cookies e sessioni. Goy - a.a. 2012/2013 Programmazione Web 1

[1] Cross Site Scripting [2] Remote / Local File Inclusion [3] SQL Injection

2. Costruire un database con Apache, PHP e MySql

A. Lorenzi Pagine ASP

Transcript:

Procedura di login e sessione Costruire una pagina Web con un form di login per l inserimento delle credenziali dell utente (email, password). Si consideri il database db1 su server MySQL con la tabella utenti avente la seguente struttura: utenti (ID, Cognome, Nome, Email, Telefono, Citta, Provincia, Password) La pagina Web seguente realizza la procedura di login per l acquisizione dei dati di un utente (credenziali) e per la sua identificazione. La pagina HTML presenta la maschera di login e richiama la pagina PHP per il controllo. Lo script PHP controlla che l utente sia registrato sul server, fornendo anche un messaggio con l esito del controllo. In caso positivo fornisce l accesso alla prima pagina del sito, contenente anche un link per consentire all utente di disconnettersi (logout). Pagina HTML (login.htm) <!doctype html> <html> <head> <title>identificazione dell'utente</title> </head> <body> <h2>accesso all'area riservata</h2> <form action="controllalogin.php" method= post > <p> email: <input type="text" name="email" size="40" /> Password: <input type="password" name="password" size="40" /><br/> </p> <p> <input type="submit" name="invio" value="login" /> <input type="reset" name="cancella" value="annulla" /> </p> </form> </body> </html> Casella di input di tipo password: sostituisce i caratteri inseriti con i puntini durante l inserimento della password. 1 Istituto Italiano Edizioni Atlas

Lo script seguente, richiamato dalla pagina di login, accede al database db1 sul server e controlla se l utente è registrato nella tabella utenti: in caso positivo apre la pagina di accesso al sito creando una nuova sessione Web, altrimenti visualizza un messaggio di identificazione non riuscita. Con il termine sessione si intende un insieme di accessi dello stesso utente a pagine Web diverse. La gestione della sessione consiste essenzialmente nel registrare le informazioni dell utente, in modo da consentire la navigazione nelle altre pagine del sito senza richiedere ogni volta le credenziali dell utente. Ogni pagina del sito, al momento del caricamento, controlla che i dati dell utente siano già registrati in una sessione: in caso negativo, rimanda alla pagina di login. Una sessione termina nel momento in cui l utente effettua un logout oppure chiude il browser. Pagina PHP (controllalogin.php) $host="localhost"; $username="root"; $password="root"; $db_nome="db1"; $tab_nome="utenti"; mysql_connect($host, $username, $password) or die('impossibile connettersi al server: '. mysql_error()); mysql_select_db($db_nome) or die ('Accesso al database non riuscito: '. mysql_error()); // acquisizione dati dal form HTML $email = $_POST["email"]; $password = $_POST["password"]; 2 Istituto Italiano Edizioni Atlas

// protezione per SQL injection $email = stripslashes($email); $password = stripslashes($password); $email = mysql_real_escape_string($email); $password = mysql_real_escape_string($password); $passmd5 = md5($password); Password crittografata con la funzione md5. // lettura della tabella utenti $sql="select * FROM $tab_nome WHERE Email='$email' AND Password='$passmd5'"; $result=mysql_query($sql); $conta=mysql_num_rows($result); if($conta==1){ $_SESSION['email'] = $email; $_SESSION['password'] = $passmd5; header("location: loginok.php"); else { Avvio della sessione. Reindirizzamento a un altra pagina (loginok.php). echo "Identificazione non riuscita: nome utente o password errati <br />"; echo "Torna a pagina di <a href=\"login.htm\">login</a>"; Lo script utilizza due funzioni per la protezione dalla SQL injection, che è presentata nei Contenuti digitali integrativi di questo capitolo. In particolare: la funzione stripslashes rimuove i backslash (\) da una stringa (\ diventa ). I doppi backslash (\\) sono ridotti ad un singolo backslash (\); la funzione mysql_real_escape_string aggiunge le sequenza di escape ai caratteri speciali in una stringa in modo che sia utilizzata in modo sicuro nei comandi mysql_query. Inoltre la password viene crittografata con la funzione md5, applicando l algoritmo MD5; in questo modo nella tabella del database la password viene registrata non in chiaro, ma come una stringa di 32 cifre esadecimali (128 bit). Si osservi che, se si vuole crittografare il campo password nella tabella con la funzione MD5, occorre che la lunghezza del campo sia almeno di 32 caratteri. Se la crittografia riguarda una tabella nella quale le password siano state già inserite in chiaro, si può usare la funzione MD5 per aggiornare i valori nel campo password con il seguente comando SQL: UPDATE utenti SET password = MD5(password); Il controllo sulla presenza dell utente nel database viene eseguito tramite il numero delle righe restituite dalla query (mysql_num_rows) che deve essere uguale a 1: $conta=mysql_num_rows($result); if($conta==1){...... Nel caso di esito positivo del controllo, lo script avvia una sessione (session_start) registrando le informazioni dell utente nella variabile $_SESSION (array associativo). 3 Istituto Italiano Edizioni Atlas

Inoltre il comando header avente la sintassi generale: header("location: URL pagina"); provoca il reindirizzamento a un altra pagina loginok.php, che potrebbe essere la prima pagina dell area riservata alla quale possono accedere gli utenti autenticati. Nel caso di esito negativo del controllo sull identificazione dell utente, viene visualizzato un messaggio di identificazione non riuscita e l utente deve tornare alla pagina di login. Pagina PHP (loginok.php) if(!isset($_session['email'])) { header("location: login.htm"); <html> <body> Identificazione utente riuscita! <br /> Benvenuto nell'area riservata <br /> Se non sono state impostate le variabili di sessione, torna alla pagina di login. premi su <a href="logout.php">logout</a> per disconnetterti </body> </html> Link per attivare la pagina di logout che chiude la sessione (logout.php). Le pagine del sito con accesso riservato devono contenere la scelta per il logout, che attiva i comandi per eliminare le variabili di sessione: $_SESSION = array(); e per eliminare la sessione stessa: session_destroy(); 4 Istituto Italiano Edizioni Atlas

Pagina PHP (logout.php) // elimina le variabili di sessione impostate $_SESSION = array(); // elimina la sessione session_destroy(); echo "Disconnessione riuscita, arrivederci!" 5 Istituto Italiano Edizioni Atlas