home
/
u529748449
/
domains
/
borabilhete.com
/
public_html
/
public
➕ New
📤 Upload
✎ Editing:
gerar_ingressos.php
← Back
<?php // public/gerar_ingressos.php require_once __DIR__ . '/../admin/conexao.php'; require_once __DIR__ . '/../libs/fpdf/fpdf.php'; require_once __DIR__ . '/phpqrcode/qrlib.php'; // Não mostrar warnings/deprecated na saída do PDF ini_set('display_errors', 0); error_reporting(E_ALL & ~E_DEPRECATED & ~E_WARNING & ~E_NOTICE); // Garante que nada é enviado antes do PDF ob_start(); /** * Converte texto UTF-8 para ISO-8859-1 (latin1) para o FPDF. * Usa TRANSLIT para tentar mapear caracteres sem erro. */ function pdf_txt(?string $s): string { if ($s === null) return ''; $out = @iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $s); return $out === false ? '' : $out; } // --- Valida token --- $token = $_GET['token'] ?? ''; if (!$token || strlen($token) < 32) { // Em caso de erro, limpamos o buffer e respondemos texto if (ob_get_length()) ob_end_clean(); header('Content-Type: text/plain; charset=UTF-8'); exit('⚠️ Token inválido.'); } // --- Busca pedido pago --- $stmt = $conn->prepare(" SELECT p.*, e.nome AS nome_evento, e.data, e.local FROM pedidos p JOIN eventos e ON p.id_evento = e.id WHERE p.token_seguro = ? AND p.status_pagamento = 'pago' LIMIT 1 "); $stmt->bind_param("s", $token); $stmt->execute(); $pedido = $stmt->get_result()->fetch_assoc(); if (!$pedido) { if (ob_get_length()) ob_end_clean(); header('Content-Type: text/plain; charset=UTF-8'); exit('⚠️ Pedido não encontrado ou ainda não está pago.'); } // --- Busca itens --- $stmtItens = $conn->prepare(" SELECT s.nome_setor, i.quantidade, i.valor_unitario, i.taxa, i.id_setor FROM pedidos_itens i JOIN setores s ON i.id_setor = s.id WHERE i.id_pedido = ? "); $stmtItens->bind_param("i", $pedido['id']); $stmtItens->execute(); $resItens = $stmtItens->get_result(); if ($resItens->num_rows === 0) { if (ob_get_length()) ob_end_clean(); header('Content-Type: text/plain; charset=UTF-8'); exit('⚠️ Nenhum ingresso encontrado para este pedido.'); } // --- Inicia PDF --- $pdf = new FPDF(); $pdf->SetAutoPageBreak(true, 20); $contador = 1; while ($item = $resItens->fetch_assoc()) { for ($i = 1; $i <= (int)$item['quantidade']; $i++) { // Gera QR Code único por ingresso $conteudoQR = "token={$pedido['token_seguro']}&setor={$item['id_setor']}&ingresso={$i}"; $qrPath = sys_get_temp_dir() . "/qr_{$pedido['id']}_{$item['id_setor']}_{$i}.png"; QRcode::png($conteudoQR, $qrPath, QR_ECLEVEL_H, 4); if (!file_exists($qrPath)) { if (ob_get_length()) ob_end_clean(); header('Content-Type: text/plain; charset=UTF-8'); exit("❌ QR Code não encontrado."); } // Página por ingresso $pdf->AddPage(); $pdf->SetFont('Arial', 'B', 16); $titulo = "Ingresso #{$contador} - Evento: " . ($pedido['nome_evento'] ?? ''); $pdf->Cell(0, 10, pdf_txt($titulo), 0, 1, 'C'); $pdf->SetFont('Arial', '', 12); $pdf->Ln(3); $pdf->Cell(0, 8, pdf_txt("Cliente: " . ($pedido['nome_cliente'] ?? '')), 0, 1); $pdf->Cell(0, 8, pdf_txt("CPF: " . ($pedido['cpf'] ?? '')), 0, 1); $pdf->Cell(0, 8, pdf_txt("Evento: " . ($pedido['nome_evento'] ?? '')), 0, 1); $pdf->Cell(0, 8, pdf_txt("Data: " . date('d/m/Y H:i', strtotime($pedido['data']))), 0, 1); $pdf->Cell(0, 8, pdf_txt("Local: " . ($pedido['local'] ?? '')), 0, 1); $pdf->Cell(0, 8, pdf_txt("Setor: " . ($item['nome_setor'] ?? '')), 0, 1); $forma = ucfirst($pedido['forma_pagamento'] ?? 'MercadoPago'); $pdf->Cell(0, 8, pdf_txt("Forma de Pagamento: " . $forma), 0, 1); $valor = number_format((float)$item['valor_unitario'], 2, ',', '.'); $taxa = number_format((float)$item['taxa'], 2, ',', '.'); $pdf->Cell(0, 8, pdf_txt("Valor: R$ {$valor} + Taxa: R$ {$taxa}"), 0, 1); $pdf->Ln(6); $texto = "Apresente este ingresso na entrada do evento. O QR Code abaixo será usado para validação."; $pdf->MultiCell(0, 7, pdf_txt($texto), 0, 'L'); // Desenha QR $x = $pdf->GetX() + 30; $y = $pdf->GetY() + 2; $pdf->Image($qrPath, $x, $y, 50, 50, 'PNG'); // Remove arquivo temporário @unlink($qrPath); $contador++; } } // Limpa qualquer saída e envia o PDF if (ob_get_length()) { ob_end_clean(); } header('Content-Type: application/pdf'); $pdf->Output('I', "ingressos_{$pedido['id']}.pdf"); exit;
💾 Save Changes
Cancel
📤 Upload File
×
Select File
Upload
Cancel
➕ Create New
×
Type
📄 File
📁 Folder
Name
Create
Cancel
✎ Rename Item
×
Current Name
New Name
Rename
Cancel
🔐 Change Permissions
×
Target File
Permission (e.g., 0755, 0644)
0755
0644
0777
Apply
Cancel