$char) { $charIndex = strpos($alpha, $char); if ($charIndex !== false && $index % 2 === 0) { $codigoArray[$index] = $alphaReverso[$charIndex]; } } return implode('', array_reverse($codigoArray)); } try { // Conectar ao banco de dados MySQL $servername = "localhost"; $username = "root"; $password = ""; $dbname = "xcmg"; $conn = new mysqli($servername, $username, $password, $dbname); if ($conn->connect_error) { throw new Exception("Conexão falhou: " . $conn->connect_error); } if ($_SERVER["REQUEST_METHOD"] == "POST") { $arquivo = "dados/dados.xlsx"; // Verifica se o arquivo existe if (file_exists($arquivo)) { $planilha = \PhpOffice\PhpSpreadsheet\IOFactory::load($arquivo); $sheet = $planilha->getActiveSheet(); } else { $planilha = new Spreadsheet(); $sheet = $planilha->getActiveSheet(); $sheet->setCellValue("A1", "Nome"); $sheet->setCellValue("B1", "Empresa"); $sheet->setCellValue("C1", "Cargo"); $sheet->setCellValue("D1", "Telefone"); $sheet->setCellValue("E1", "Email"); $sheet->setCellValue("F1", "Cliente XCMG"); $sheet->setCellValue("G1", "Usa Banco XCMG"); } // Sanitiza os dados básicos $nome = $conn->real_escape_string($_POST["nome"]); $empresa = $conn->real_escape_string($_POST["empresa"]); $cargo = $conn->real_escape_string($_POST["cargo"]); $telefone = $conn->real_escape_string($_POST["telefone"]); // Determina se é cliente XCMG $cliente_xcmg = "Não"; if (isset($_POST["conhece_xcmg"]) && isset($_POST["adquiriu_xcmg"])) { $cliente_xcmg = "Sim"; } // Determina se usa banco XCMG $usa_banco_xcmg = "Não"; if (isset($_POST["conhece_banco_xcmg"]) && isset($_POST["interesse_financiar_xcmg"])) { $usa_banco_xcmg = "Sim"; } // Email (mantemos no dados_adicionais para não requerer alteração da tabela) $email = isset($_POST['email']) ? trim($_POST['email']) : ''; // validação simples do formato do e-mail (se informado) if ($email !== '' && !filter_var($email, FILTER_VALIDATE_EMAIL)) { throw new Exception('E-mail inválido'); } // Cria array com dados adicionais (incluindo e-mail) $dados_adicionais = [ 'email' => $email, 'topicos' => isset($_POST['topicos']) ? (array)$_POST['topicos'] : [], 'data_cadastro' => date('Y-m-d H:i:s'), 'ip_address' => $_SERVER['REMOTE_ADDR'], 'user_agent' => isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '' ]; $dados_json = json_encode($dados_adicionais, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); $dados_json = str_replace("'", "''", $dados_json); // Salva na planilha $linha = $sheet->getHighestRow() + 1; $sheet->setCellValue("A$linha", $nome); $sheet->setCellValue("B$linha", $empresa); $sheet->setCellValue("C$linha", $cargo); $sheet->setCellValue("D$linha", $telefone); $sheet->setCellValue("E$linha", $email); $sheet->setCellValue("F$linha", $cliente_xcmg); $sheet->setCellValue("G$linha", $usa_banco_xcmg); $escritor = new Xlsx($planilha); $escritor->save($arquivo); // Insere no banco $sql = "INSERT INTO cadastros ( nome, empresa, cargo, telefone, cliente_xcmg, usa_banco_xcmg, dados_adicionais, ativado, status ) VALUES (?, ?, ?, ?, ?, ?, ?, 0, 0)"; $stmt = $conn->prepare($sql); $stmt->bind_param("sssssss", $nome, $empresa, $cargo, $telefone, $cliente_xcmg, $usa_banco_xcmg, $dados_json ); if (!$stmt->execute()) { throw new Exception("Erro ao inserir dados: " . $stmt->error); } $codigo = $conn->insert_id; $codigoEmbaralhado = embaralharCodigo($codigo); // Atualiza o código $sql_update = "UPDATE cadastros SET codigo = ? WHERE id = ?"; $stmt_update = $conn->prepare($sql_update); $stmt_update->bind_param("si", $codigoEmbaralhado, $codigo); if (!$stmt_update->execute()) { throw new Exception("Erro ao atualizar código: " . $stmt_update->error); } if (isset($stmt_update)) $stmt_update->close(); if (isset($stmt)) $stmt->close(); $conn->close(); // Limpa qualquer saída anterior ob_clean(); // Define cookies e redireciona setcookie('index', $codigoEmbaralhado, time() + (12 * 3600), '/'); setcookie('indexTimestamp', time(), time() + (12 * 3600), '/'); setcookie('cadastro', 'true', time() + (12 * 3600), '/'); header("Location: play.php"); exit(); } } catch (Exception $e) { error_log($e->getMessage()); $_SESSION['erro'] = "Erro ao processar o cadastro. Por favor, tente novamente."; ob_clean(); header("Location: index.php"); exit(); } // Se chegou aqui sem POST, redireciona para index ob_clean(); header("Location: index.php"); exit(); ?>