add cadastro
This commit is contained in:
164
salvar.php
Executable file
164
salvar.php
Executable 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();
|
||||
?>
|
||||
Reference in New Issue
Block a user