setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $dbTokens->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); } catch (Exception $e) { $erro_token_db = $e->getMessage(); registrarAcessoEbook('ERRO_CRITICO_BANCO', '', $erro_token_db); } // ============================================================================ // BLOCO 4: VERIFICAÇÃO DO TOKEN // ============================================================================ $token_submetido = isset($_GET['token']) ? trim($_GET['token']) : ''; $token_submetido = preg_replace('/[^a-z0-9_]/', '', $token_submetido); $tokenData = null; $tokenValido = false; $tokenExpirado = false; $tokenRevogado = false; $tokenNaoExiste = false; $tokenSemValidade = false; $tokenValidade = null; $tokenUserName = null; // Só valida se tiver token e banco estiver OK if (!empty($token_submetido) && $dbTokens) { try { $stmt = $dbTokens->prepare(" SELECT token, validade, revogado, revoked, user_name, tipo_de_token, observacoes, access_token, expires_at FROM tokens WHERE token = ? OR access_token = ? LIMIT 1 "); $stmt->execute([$token_submetido, $token_submetido]); $tokenData = $stmt->fetch(); if (!$tokenData) { $tokenNaoExiste = true; registrarAcessoEbook('INVALIDO', $token_submetido, 'Token não encontrado no banco'); } else { // Verificar revogado if (($tokenData['revogado'] ?? 0) == 1 || ($tokenData['revoked'] ?? 0) == 1) { $tokenRevogado = true; registrarAcessoEbook('REVOGADO', $token_submetido); } else { // Verificar validade $validade = $tokenData['validade'] ?? $tokenData['expires_at'] ?? null; $tokenValidade = $validade; $tokenUserName = $tokenData['user_name'] ?? 'Usuário'; if ($validade) { $validadeObj = new DateTime($validade); $validadeObj->setTime(23, 59, 59); $agora = new DateTime(); if ($agora <= $validadeObj) { $tokenValido = true; registrarAcessoEbook('AUTORIZADO', $token_submetido, 'Usuário: ' . $tokenUserName); } else { $tokenExpirado = true; registrarAcessoEbook('EXPIRADO', $token_submetido); } } else { $tokenSemValidade = true; registrarAcessoEbook('SEM_VALIDADE', $token_submetido); } } } } catch (Exception $e) { $erro_token_db = $e->getMessage(); registrarAcessoEbook('ERRO_VALIDACAO', $token_submetido, $erro_token_db); } } // ============================================================================ // BLOCO 5: BUSCAR E-BOOK (se token válido) // ============================================================================ $id = isset($_GET['id']) ? (int)$_GET['id'] : 0; $ebook = null; $capitulos = []; $totalCapitulos = 0; $totalVersiculos = 0; $erro_ebook = null; if ($id > 0 && $tokenValido) { $dbPath = '/home/link6350/arquivos_restritos/banco_de_dados/sqlite/ebooks/ebooks_database.sqlite'; try { if (!file_exists($dbPath)) { throw new Exception('Banco de dados de e-books não encontrado'); } $db = new PDO('sqlite:' . $dbPath); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); // Buscar dados do e-book $stmt = $db->prepare("SELECT * FROM ebooks WHERE id = ?"); $stmt->execute([$id]); $ebook = $stmt->fetch(); if (!$ebook) { $erro_ebook = 'E-book não encontrado'; } else { // Buscar versículos $stmt = $db->prepare(" SELECT id, numero_capitulo, numero_versiculo, titulo_versiculo, conteudo_versiculo, url_imagem_ilustrativa FROM ebooks___versiculos WHERE id_ebook = ? ORDER BY numero_capitulo, numero_versiculo "); $stmt->execute([$id]); $versiculos = $stmt->fetchAll(); $totalVersiculos = count($versiculos); $totalCapitulos = 0; $capitulos = []; if (!empty($versiculos)) { foreach ($versiculos as $v) { $cap = (int)$v['numero_capitulo']; if (!isset($capitulos[$cap])) { $totalCapitulos++; $capitulos[$cap] = [ 'titulo' => $v['titulo_versiculo'] ?? 'Capítulo ' . $cap, 'versiculos' => [] ]; } $capitulos[$cap]['versiculos'][] = $v; } } } } catch (Exception $e) { $erro_ebook = 'Erro ao carregar e-book: ' . $e->getMessage(); } } ?> <?= $ebook && $tokenValido ? htmlspecialchars($ebook['titulo']) : '📚 E-book - Acesso Protegido' ?>
Voltar

E-book SQLite 🔑 Acesso Protegido 🔴 Offline

ID:
🔑 Válido até:
🔴

Sistema Indisponível

O sistema de autenticação está temporariamente indisponível.

Erro:
💬 Reportar Problema
🔐

🤔 Você precisa de um token para acessar este e-book

Insira o token recebido no momento da compra para visualizar o conteúdo completo.

0): ?>
📖 E-book ID:

Exemplo:

Não tem token? Adquira o acesso agora:

💬 Comprar Acesso no WhatsApp
🔒 Sistema de proteção por token via SQLite

Token Inválido

O token informado não foi encontrado no sistema. Verifique se você o copiou corretamente.

🔑 Token informado:

Exemplo:

Não tem token? Adquira o acesso agora:

💬 Comprar Acesso no WhatsApp
🚫

Token Revogado

Este token foi revogado e não pode mais ser usado para acessar o e-book.

📌 Motivo: O token foi desativado pelo administrador.

Para obter um novo token, entre em contato:

💬 Solicitar Novo Token

Token Expirado

Sua assinatura expirou em .

📌 Para renovar o acesso: Clique no botão abaixo para falar com o administrador e solicitar a renovação.
💬 Renovar Assinatura
⚠️

Token sem Validade Definida

Este token não possui data de validade configurada no sistema.

📌 O que fazer: Entre em contato com o administrador para regularizar seu acesso.
💬 Falar com Administrador
Voltar para o índice
capítulos versículos SQLite

Conteúdo do E-book ( versículos em capítulos)

$cap): ?>
Capítulo
Versículo

Este e-book não possui versículos cadastrados no banco de dados.

Total de versículos encontrados:

Fonte: SQLite | ID: | Usuário: | Anti-Cache: