Este sistema permite que usuários criem automaticamente instâncias personalizadas do sistema de controle de presença. Cada evento cadastrado gera uma pasta única com todos os arquivos necessários para gerenciar convidados e confirmações de presença.
sistema_cadastro_eventos/
├── index.html # Página principal do formulário
├── styles.css # Estilos CSS responsivos
├── script.js # JavaScript para validações e interações
├── criar_evento.php # Backend para criar novos eventos
├── excluir_evento.php # Backend para excluir eventos expirados
├── listar_eventos.php # Backend para listar eventos
└── README.md # Esta documentação
- Formulário responsivo com validação em tempo real
- Campos obrigatórios: nome do evento, data, organizador, email, senha
- Validação de email e confirmação de senha
- Upload opcional de logo do evento
- Geração de ID único para cada evento
- Criação de pasta dedicada para o evento
- Cópia de todos os arquivos do sistema de presença
- Configuração personalizada para o evento
- Arquivo JSON centralizado (
eventos_cadastrados.json) para controle - Armazenamento de informações do evento e organizador
- Sistema de status (ativo/expirado)
- Endpoint para listar eventos expirados
- Endpoint para excluir eventos após 30 dias
- Compatível com automação via n8n
Para configurar a exclusão automática de eventos no n8n:
- Adicione um nó "Schedule Trigger" configurado para executar diariamente
- Configure para executar às 02:00 da manhã, por exemplo
- Adicione um nó "HTTP Request"
- Método: GET
- URL:
https://seudominio.com/sistema_cadastro_eventos/listar_eventos.php
- Adicione um nó "Code" para processar a resposta
- Extrair eventos expirados da resposta JSON
- Para cada evento expirado, fazer uma requisição POST
- URL:
https://seudominio.com/sistema_cadastro_eventos/excluir_evento.php - Body:
{"evento_id": "ID_DO_EVENTO"}
// Nó Code para processar eventos expirados
const response = $input.first().json;
if (response.sucesso && response.eventos_expirados.length > 0) {
return response.eventos_expirados.map(evento => ({
json: {
evento_id: evento.id,
nome: evento.nome,
data_evento: evento.data_evento
}
}));
}
return [];[
{
"id": "evento_12345",
"nome": "Festa de 15 Anos",
"data_evento": "2025-07-15",
"organizador": "João Silva",
"email": "joao@email.com",
"diretorio": "../eventos/evento_12345/",
"data_criacao": "2025-06-07 17:00:00",
"status": "ativo"
}
]Para cada evento criado, são geradas duas URLs:
-
Página de Administração:
/eventos/{evento_id}/admin.html- Acesso protegido por senha
- Gerenciamento de convidados
- Relatórios de presença
-
Página de Confirmação:
/eventos/{evento_id}/index.html- Página pública para confirmação de presença
- Interface amigável para convidados
- Senhas são armazenadas com hash usando
password_hash() - Validação de dados no frontend e backend
- Proteção contra ataques de diretório
- Headers CORS configurados adequadamente
- Faça upload dos arquivos para seu servidor web
- Certifique-se de que o PHP tenha permissões de escrita
- Configure o diretório base para os eventos
- Teste o formulário de cadastro
- Configure o workflow no n8n para exclusão automática
- Monitore o arquivo
eventos_cadastrados.jsonregularmente - Faça backup dos dados importantes antes de exclusões
- Verifique logs de erro do servidor web
- Teste periodicamente o workflow do n8n