<?php
// includo il file con la lista delle funzioni di utilitˆ
require_once 'inc/utils.php';
// Qui inseriremo gli errori avvenuti durante la validazione
// dei dati inseriti dall'utente nel form di login
$formErrors = array();
// Questi sono i dati inviati dall'utente
$userEmail = $_POST['user-email'];
$userPassword = $_POST['user-password'];
/* Controllo sull'indirizzo email
*
* Se la lunghezza 0 allora il campo vuoto
* altrimenti controllo che l'indirizzo email sia valido
*/
if (strlen($userEmail) == 0)
{
$formErrors[] = 'Il campo email è obbligatorio.';
}
else if (false == emailIsValid($userEmail))
{
$formErrors[] = "L'indirizzo email inserito non è corretto";
}
/* Controllo sulla password inserita
*
* Se la lunghezza 0 allora il campo vuoto
* Altrimenti controllo che la password abbia una lunghezza minima di 6
*/
if (strlen($userPassword) == 0)
{
$formErrors[] = 'Il campo password è obbligatorio';
}
else if (strlen($userPassword) < 4)
{
$formErrors[] = 'La password inserita è troppo corta! Inserisci una password di almeno 4 caratteri ';
}
// Se $formErrors vuoto vuol dire che
// tutti i campi compilati dall'utente sono corretti
if (count($formErrors) == 0)
{
//La password inserita viene ora criptata tramite la funzione md5()
// criptare la password un buon modo per alzare il livello di sicurezza
// del nostro sistema di login
$userPassword = md5($userPassword);
// includo ora la lista di funzioni che servono per gestire l'utente
require_once 'inc/user.php';
/* Provo ad autenticare l'utente cercando la coppia email:password
* nel database.
*
* Se riesco ad autenticarlo, lo redirigo alla sua pagina Profilo
* inserendo nella sessione le informazioni basilari dell'utente
*/
$userId = authenticateUser($userEmail, $userPassword);
if (false == $userId)
{
$formErrors[] = 'La coppia email/password non è corretta';
}
else
{
// Recupero le informazioni dell'utente
$user = userFindById($userId);
// Aggiungo le informazioni dell'utente alla sessione
// ed imposto il login a true, per identificare
// che l'utente si loggato correttamente
sessionAddInformation('login', true);
sessionAddInformation('user_id', $user['user_id']);
sessionAddInformation('email', $user['email']);
sessionAddInformation('name', $user['name']);
// Rimando poi l'utente alla pagina successiva
header('Location: rpc.php');
}
}
// Stampo a video la lista degli errori, se presenti
echo showFormErrors($formErrors);
?>
<?php
/*
* In questo file sono contenute le funzioni utili
* alla gestione degli utenti
*/
// Includo la lista delle funzioni per dialogare con il database
require_once 'database.php';
// Questa funzione si occupa di autenticare un utente
// nel sistema
function authenticateUser($userEmail, $userPassword)
{
// Apro una connessione con il database
$connection = getConnection();
// Cerco nel database un utente attivo
// con la coppia email:password specificata
$sql = "SELECT user_id
FROM login_cliente
WHERE
email = '%s'
AND
password = '%s'
AND
active = 1";
// Assegno alla query i parametri da cercare
$sql = sprintf($sql, $userEmail, $userPassword);
// Eseguo la query sul database
$result = mysql_query($sql, $connection);
// Se si verificato un errore oppure non ho trovato nessun risultato
if (false == $result || mysql_num_rows($result) == 0)
return false;
// Questa riga contiene le informazioni dell'utente, se trovato nel database
$row = mysql_fetch_assoc($result);
// Ritorno lo user_id dell'utente
return $row['user_id'];
}
// Questa funzione permette di registrare un nuovo utente nel sistema
function registerNewUser($userData)
{
// Apro una connessione con il database
$connection = getConnection();
// Questi sono i dati da inserire nel database
$userEmail = $userData['email'];
$userPassword = $userData['password'];
$userName = $userData['name'];
$userLastName = $userData['lastname'];
$userDataN = $userData['datanascita'];
$userLuogoN= $userData['luogonascita'];
$userProv= $userData['provincia'];
$userResidenza= $userData['residenza'];
$userIndirizzo= $userData['indirizzo'];
$token = $userData['token'];
// Query per inserire i nuovi dati nel database
$sql = "INSERT INTO login_cliente
(email, password, name,lastname,datanascita,luogonascita,provincia,residenza,indirizzo, token)
VALUES
('%s', '%s', '%s','%s','%s','%s','%s','%s','%s','%s') ";
// Assegno alla query i parametri da cercare
$sql = sprintf($sql,
$userEmail,
$userPassword,
mysql_real_escape_string($userName),
mysql_real_escape_string($userLastName),
$userDataN, $userLuogoN,$userProv,$userResidenza,$userIndirizzo,
$token);
// Provo ad inserire i dati
if (false == mysql_query($sql, $connection))
{
return false;
}
// se sono riuscito ad inserire i dati,
// ritorno l'ultimo user_id inserito
else
{
return mysql_insert_id($connection);
}
}
// Questa funzione controlla l'esistenza
// nel database di un utente con uno specifico indirizzo email
function userEmailExists($userEmail)
{
// Apro una connessione con il database
$connection = getConnection();
// Conto il numero di utenti registrati con
// l'indirizzo email specificato
$sql = "SELECT user_id
FROM login_cliente
WHERE
email = '%s' ";
// Assegno alla query i parametri da cercare
$sql = sprintf($sql, $userEmail);
// Eseguo la query sul database
$result = mysql_query($sql, $connection);
// Se non ho trovato utenti oppure se si
// verificato un errore
if (false == $result || mysql_num_rows($result) == 0)
{
return false;
}
// Altrimenti vuol dire che ho trovato un utente
// con l'indirizzo email specificato
else
{
return true;
}
}
// Questa funzione cerca i dati di un utente
// in base al token specificato
function userFindByToken($token)
{
// Apro una connessione con il database
$connection = getConnection();
// Cerco un utente con un certo token
$sql = "SELECT *
FROM login_cliente
WHERE
token = '%s'";
// Assegno alla query i parametri da cercare
$sql = sprintf($sql, $token);
// Eseguo la query sul database
$result = mysql_query($sql, $connection);
// Se si verificato un errore oppure non
// ho trovato nessun utente
if (false == $result || mysql_num_rows($result) == 0)
{
return false;
}
// Ritorno i dati dell'utente trovato
return mysql_fetch_assoc($result);
}
// Questa funzione cerca i dati di un utente
// in base all'indirizzo email specificato
function userFindByEmail($userEmail)
{
// Apro una connessione con il database
$connection = getConnection();
// Cerco un utente con un certo indirizzo email
$sql = "SELECT *
FROM login_cliente
WHERE
email = '%s'";
// Assegno alla query i parametri da cercare
$sql = sprintf($sql, $userEmail);
// Eseguo la query sul database
$result = mysql_query($sql, $connection);
// Se si verificato un errore oppure non
// ho trovato nessun utente
if (false == $result || mysql_num_rows($result) == 0)
{
return false;
}
// Ritorno i dati dell'utente trovato
return mysql_fetch_assoc($result);
}
// Questa funzione cerca i dati di un utente
// in base ad un userId specificato
function userFindById($userId)
{
// Apro una connessione con il database
$connection = getConnection();
// Cerco un utente con un certo userId
$sql = "SELECT *
FROM login_cliente
WHERE
user_id = %d";
// Assegno alla query i parametri da cercare
$sql = sprintf($sql, $userId);
// Eseguo la query sul database
$result = mysql_query($sql, $connection);
// Se si verificato un errore oppure non
// ho trovato nessun utente
if (false == $result || mysql_num_rows($result) == 0)
{
return false;
}
// Ritorno i dati dell'utente trovato
return mysql_fetch_assoc($result);
}
// Questa funzione serve per attivare l'account
// di un utente con un certo userId
function userActivate($userId)
{
// Apro una connessione con il database
$connection = getConnection();
// Attivo l'utente impostando il campo
// active a 1
$sql = "UPDATE login_cliente
SET active = 1, token = NULL
WHERE
user_id = %d";
// Assegno alla query i parametri da cercare
$sql = sprintf($sql, $userId);
// Eseguo la query sul database
$result = mysql_query($sql, $connection);
// Se si verificato un errore oppure nessun utente
// Ž stato attivato
if (false == $result || mysql_affected_rows($connection) == 0)
{
return false;
}
// Altrimenti l'utente stato attivato
else
{
return true;
}
}
// Questa funzione permette di settare il token
// di uno specifico utente, identificato dal suo userId
function userSetToken($token, $userId)
{
// Apro la connessione al database
$connection = getConnection();
// Questa la query di aggornamento
$sql = "UPDATE login_cliente
SET token = '%s'
WHERE user_id = %d";
// Assegno alla query i parametri da cercare
$sql = sprintf($sql, $token, $userId);
// Eseguo la query
$result = mysql_query($sql, $connection);
// Se si verificato un errore oppure nessun token stato settato
// ritorno false
if (false == $result || mysql_affected_rows($connection) == 0)
{
return false;
}
// altrimenti ritorno true
else
{
return true;
}
}