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(); } } ?>
O sistema de autenticação está temporariamente indisponível.
Insira o token recebido no momento da compra para visualizar o conteúdo completo.
0): ?>Não tem token? Adquira o acesso agora:
💬 Comprar Acesso no WhatsAppO token informado não foi encontrado no sistema. Verifique se você o copiou corretamente.
= htmlspecialchars($token_submetido) ?>
Não tem token? Adquira o acesso agora:
💬 Comprar Acesso no WhatsAppEste token foi revogado e não pode mais ser usado para acessar o e-book.
Para obter um novo token, entre em contato:
💬 Solicitar Novo TokenSua assinatura expirou em = $tokenValidade ? date('d/m/Y', strtotime($tokenValidade)) : 'data desconhecida' ?>.
Este token não possui data de validade configurada no sistema.
Este e-book não possui versículos cadastrados no banco de dados.
Total de versículos encontrados: = $totalVersiculos ?>