add cadastro

This commit is contained in:
Ronaldo
2026-04-06 12:36:25 +00:00
parent a315eab0d5
commit e61ccda3ed
787 changed files with 155807 additions and 0 deletions

164
salvar.php Executable file
View File

@@ -0,0 +1,164 @@
<?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();
?>