165 lines
5.8 KiB
PHP
Executable File
165 lines
5.8 KiB
PHP
Executable File
<?php
|
|
ob_start();
|
|
session_start();
|
|
|
|
require_once 'vendor/autoload.php';
|
|
|
|
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
|
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
|
|
|
|
// Função para embaralhar um código
|
|
function embaralharCodigo($codigo) {
|
|
$alpha = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
|
|
$alphaReverso = strrev($alpha);
|
|
$codigoArray = str_split($codigo);
|
|
foreach ($codigoArray as $index => $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();
|
|
?>
|