// Mi disconnetto dal database // Verifico se i dati sono corretti per poi dare un errore if ($conta <= 0) { $text = 'I dati inseriti non sono associati a nessun account. Riprova verificando i dati immessi.'; $smarty->assign("titolo", "Recupera password"); $smarty->assign("contents", $text); $smarty->assign("url_cms", $cms->url_cms()); $smarty->assign("url_smartytpl", $cms->url_smartytpl()); $smarty->assign("cmsversion", $cms->cmsversion()); $smarty->display("admin/index/index2.tpl"); exit; } // Genero una nuova password con l'RNG e la inserisco nel database $rng = rng(); // Creo la password $nuovapassword = $func->hash($rng); // La passo per un algoritmo di hash $db->connettidb(); // Mi connetto al database $query = $db->query("UPDATE utenti SET password='******' WHERE nickname='{$nickname}' AND email='{$email}'"); $db->disconnettidb(); // Mi disconnetto dal database // Invio la password via email $mittente = $cms->email(); $destinatario = $func->rescape($email); $oggetto = 'Recupero password - ' . $cms->nomesito(); $testo = 'Ciao ' . $nickname . '. Mediante il servizio Recupera password di ' . $cms->nomesito() . ' hai richiesto il recupero della tua password. Essa è stata generata automaticamente e potrai modificarla tramite l\'apposita pagina Modifica password. La tua password è la seguente: ' . $rng . '
$smarty->assign("titolo", "Login"); $smarty->assign("cookie", $db->auth($_COOKIE[$func->cookie()])); $smarty->assign("grado", $db->grado($_COOKIE[$func->cookie()])); $smarty->assign("contents", $text); $smarty->assign("url_cms", $cms->url_cms()); $smarty->assign("url_smartytpl", $cms->url_smartytpl()); $smarty->assign("cmsversion", $cms->cmsversion()); $smarty->display("admin/index/index2.tpl"); exit; } // Prelevo i dati inseriti nel login if (isset($_POST['login'])) { $nickname = $func->escape($_POST['nickname']); $password = $func->escape($_POST['password']); // Elimino gli spazi superflui e inserisco gli slash $password = $func->hash($password); // Converto in un algoritmo di hash // Mi connetto al database $db->connettidb(); // Creo la query cercando una corrispondenza tra i dati di login $query = $db->query("SELECT nickname,password FROM utenti WHERE nickname='{$nickname}' AND password='******'"); // Verifico se la query ha dato risultati $risultati = $db->conta($query); // Se non ci sono state corrispondenze dò il messaggio di login fallito if ($risultati <= 0) { $text = 'Il login non è stato effettuato.<br />Controlla i dati immessi e riprova.'; // Visualizzo la pagina $smarty->assign("titolo", "Login"); $smarty->assign("cookie", $db->auth($_COOKIE[$func->cookie()])); $smarty->assign("grado", $db->grado($_COOKIE[$func->cookie()])); $smarty->assign("contents", $text);
function loginUser() { $data = Functions::getJSONData(); $nickname = Functions::elt($data, 'nickname'); $password = Functions::elt($data, 'password'); $expiration = Functions::elt($data, 'expiration'); $actionCount = Functions::elt($data, 'actionCount'); if (is_null($nickname) || is_null($password) || is_null($expiration) || is_null($actionCount)) { Functions::setResponse(400); } $whereClause = 'nickname = :nickname'; $params = array(array('id' => ':nickname', 'value' => $nickname)); $custList = Customer::search($whereClause, $params); if (!count($custList)) { Functions::setResponse(403); } $customer = $custList[0]; if (Functions::hash($password) == $customer->get('password')) { $t = new Token(); $t->set('customerId', $customer->get('id')); $t->set('value', Functions::randomHash()); $t->set('expiration', time() + floor($expiration / 1000)); $t->set('actionCount', $actionCount); $t->save(); return $t; } else { Functions::setResponse(403); } }
$func = new Functions(); $email = new Emailer(); // Prima di procedere controllo se l' utente è già loggato if ($func->logged() == 0) { $text = 'Non risulti loggato. Devi prima effettuare il login per modificare la password.'; // Visualizzo la pagina $smarty->assign("titolo", "Modifica password"); $smarty->assign("contents", $text); $smarty->assign("url_cms", $cms->url_cms()); $smarty->assign("url_smartytpl", $cms->url_smartytpl()); $smarty->assign("cmsversion", $cms->cmsversion()); $smarty->display("admin/index/index2.tpl"); exit; } if (isset($_POST['modificapassword'])) { $password = $func->hash($func->escape($_POST['password'])); $nuovapassword = $func->hash($func->escape($_POST['nuovapassword'])); $confnuovapassword = $func->hash($func->escape($_POST['confnuovapassword'])); $nickname = $db->nickname($_COOKIE[$func->cookie()]); // Confronto i dati con il database $db->connettidb(); // Mi connetto al database $query = $db->query("SELECT password FROM utenti WHERE nickname='{$nickname}' AND password='******'"); $conta = $db->conta($query); $db->disconnettidb(); // Mi disconnetto dal database // Verifico se i dati sono corretti per poi dare un errore if ($conta <= 0) { $text = 'La password inserita non corrisponde a quella associata al tuo account. Se hai dimenticato la password, <a href="recuperapassword.php">recuperala</a>.'; $smarty->assign("titolo", "Modifica password"); $smarty->assign("contents", $text);
public function getHash($algo = self::HASH_MD5, $fast = false) { if ($fast) { return Functions::hash($algo, $this->getModificationTime() . $this->path); } switch ($algo) { case self::HASH_MD5: return md5_file($this->pathAbsolute); case self::HASH_SHA1: return sha1_file($this->pathAbsolute); default: throw new FileException("Unknown file hash algorithm."); } }