-
Orçamentos
-
Acompanhe seus orçamentos mensais e veja onde seu dinheiro está indo. (Funcionalidade futura)
-
+
+
+
+
+
+
Visão Geral do Mês
+
Gastos vs. Orçamento Total
+
R$
+
/ R$
+
+
+ 0) ? ($total_spent_this_month / $total_budget_this_month) * 100 : 0;
+ $progress_class = get_progress_bar_class($overall_percentage);
+ ?>
+
+
-
-
-
Metas
-
Defina e acompanhe suas metas de poupança para alcançar seus sonhos. (Funcionalidade futura)
-
+
+
+
+
+
+
+
+
+
+
+ | Categoria |
+ Gasto |
+ Orçamento |
+ Restante |
+ Progresso |
+
+
+
+ $data): ?>
+
+ |
+ R$ |
+ R$ |
+
+ R$
+ |
+
+ 0) ? ($data['spent'] / $data['budget']) * 100 : 0;
+ $progress_class = get_progress_bar_class($percentage);
+ ?>
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ | Nenhuma despesa registrada este mês. |
+
+
+
+ | |
+ R$ |
+ |
+
+
+
+
+
+
+
diff --git a/login.php b/login.php
index 37a4813..c18dd75 100644
--- a/login.php
+++ b/login.php
@@ -35,6 +35,16 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// Credenciais inválidas
$error_message = 'E-mail ou senha inválidos.';
}
+
+ if ($user && password_verify($password, $user['password_hash'])) {
+ // Login bem-sucedido
+ $_SESSION['user_id'] = $user['id'];
+ header('Location: index.php');
+ exit;
+ } else {
+ // Credenciais inválidas
+ $error_message = 'E-mail ou senha inválidos.';
+ }
} catch (PDOException $e) {
// Idealmente, logar o erro em vez de exibir
$error_message = 'Erro no banco de dados. Tente novamente mais tarde.';
diff --git a/profile.php b/profile.php
new file mode 100644
index 0000000..e230392
--- /dev/null
+++ b/profile.php
@@ -0,0 +1,136 @@
+prepare("SELECT name, email FROM users WHERE id = :id");
+$stmt->execute(['id' => $user_id]);
+$user = $stmt->fetch(PDO::FETCH_ASSOC);
+
+// Lógica para lidar com o POST
+if ($_SERVER['REQUEST_METHOD'] === 'POST') {
+ // Atualizar Nome
+ if (isset($_POST['update_name'])) {
+ $name = $_POST['name'] ?? '';
+ if (empty($name)) {
+ $update_name_error = 'O nome não pode estar em branco.';
+ } else {
+ try {
+ $stmt = $pdo->prepare("UPDATE users SET name = :name WHERE id = :id");
+ $stmt->execute(['name' => $name, 'id' => $user_id]);
+ $user['name'] = $name; // Atualizar o nome na página
+ $update_name_success = 'Nome atualizado com sucesso!';
+ } catch (PDOException $e) {
+ $update_name_error = 'Erro ao atualizar o nome.';
+ }
+ }
+ }
+
+ // Atualizar Senha
+ if (isset($_POST['update_password'])) {
+ $current_password = $_POST['current_password'] ?? '';
+ $new_password = $_POST['new_password'] ?? '';
+ $confirm_password = $_POST['confirm_password'] ?? '';
+
+ if (empty($current_password) || empty($new_password) || empty($confirm_password)) {
+ $update_password_error = 'Todos os campos de senha são obrigatórios.';
+ } elseif ($new_password !== $confirm_password) {
+ $update_password_error = 'A nova senha e a confirmação não correspondem.';
+ } else {
+ try {
+ // Verificar senha atual
+ $stmt = $pdo->prepare("SELECT password_hash FROM users WHERE id = :id");
+ $stmt->execute(['id' => $user_id]);
+ $hash = $stmt->fetchColumn();
+
+ if (password_verify($current_password, $hash)) {
+ // Se a senha atual estiver correta, criar novo hash e atualizar
+ $new_hash = password_hash($new_password, PASSWORD_DEFAULT);
+ $stmt_update = $pdo->prepare("UPDATE users SET password_hash = :hash WHERE id = :id");
+ $stmt_update->execute(['hash' => $new_hash, 'id' => $user_id]);
+ $update_password_success = 'Senha atualizada com sucesso!';
+ } else {
+ $update_password_error = 'A senha atual está incorreta.';
+ }
+ } catch (PDOException $e) {
+ $update_password_error = 'Erro ao atualizar a senha.';
+ }
+ }
+ }
+}
+
+include __DIR__ . '/includes/header.php';
+?>
+
+
+
+