Caminho no Gestor bibliotecas/formulario.php
Três papéis:
-
Formulários públicos (os do módulo
forms):formulario_controlador()prepara a página eformulario_processador()recebe o envio. -
Validação dos formulários do painel:
formulario_validacao()gera as regras do lado do navegador, usada pela interface.php e por vários módulos. -
CAPTCHA e limites por IP próprios dos formulários.
Na página: formulario_controlador()
formulario_controlador(['formId' => 'contato']); // ou ['contato', 'newsletter']Monta a configuração de cada formulário (formulario_montar_js_vars(): campos, regras, textos, CAPTCHA) e a expõe em gestor.form[<id>]; com um id só, também no formato plano antigo. Inclui o JS da biblioteca uma vez. Em ~1% das chamadas, limpa os acessos vencidos (formulario_acessos_limpeza()).
No envio: formulario_processador()
Responde por AJAX ($_GESTOR['ajax-json']) ao POST do formulário (_formId e os campos), nesta ordem:
-
Honeypot: campo
honeypotpreenchido = robô. -
Validade do envio:
timestampenviado pelo navegador com até 2 dias. -
Definição do formulário na tabela
forms(idioma atual): nome,fields_schemae status (inativo = recusado). -
Limite por IP (
formulario_acesso_verificar()), por formulário:bloqueadorecusa. -
CAPTCHA (seguranca.php): com Turnstile, sempre; com reCAPTCHA, a partir do status
antispamou quando o schema temforce_recaptcha: true; o v3 que falha pode cair no v2 (status: require_v2) se o v2 estiver ativo. -
Campos do schema: obrigatórios, e-mail e URL válidos, tamanho mínimo (3 em texto, ou o das Opções) e máximo (254 em text/email/password/url, 10000 em textarea, 1000 nos demais), faixas de número e data das Opções (
formulario_parse_limits():min:,max:,step:). -
Grava em
forms_submissions(nome da submissão pelofield_namedo schema, pelo camponameou pelo primeiro campo de texto). Campospasswordsão gravados vazios. -
Conta o envio no limite por IP (
formulario_acesso_cadastrar()). -
E-mail de notificação: destinatários em
email.recipientsdo schema (separados por;, aceitandoNome <email>), ou o remetente do.env; assunto, reply-to (o primeiro e-mail válido do envio) e o componente de mensagem do formulário, com recuo paraforms-prepared-email(formulario_email_*). Antes de enviar, o filtroformulario.email.mensagem(hooks) pode alterar o HTML, e as imagens do site viram anexos embutidos (formulario_email_processar_imagens()). -
Grava
email_statusna submissão e devolve sucesso com o redirecionamento (/sucesso/por padrão).
Limites do .env: FORMULARIOS_MAXIMO_CADASTROS e FORMULARIOS_MAXIMO_CADASTROS_SIMPLES (sobrescrevíveis por access_max e access_max_simple no schema), além dos tempos de bloqueio e limpeza (formularios-* em variáveis globais). A lógica é a mesma do controle de tentativas, em formulario_acesso_verificar(), formulario_acesso_cadastrar() e formulario_acesso_falha().
Validação no painel: formulario_validacao()
formulario_validacao([
'formId' => 'form-usuarios',
'validacao' => [
['regra' => 'email', 'campo' => 'email', 'label' => 'E-mail'],
['regra' => 'texto-obrigatorio', 'campo' => 'nome', 'label' => 'Nome'],
],
]);Gera as regras do Fomantic UI para o formulário, com os textos de erro das variáveis. Regras: nao-vazio, texto-obrigatorio, texto-obrigatorio-verificar-campo, selecao-obrigatorio, email, email-comparacao, email-comparacao-verificar-campo, senha, senha-comparacao e manual. formulario_validacao_campos_obrigatorios() faz a conferência do lado do servidor e, se faltar algo, mostra o alerta e redireciona. formulario_incluir_js() inclui o script de validação.
reCAPTCHA legado
formulario_google_recaptcha() e formulario_google_recaptcha_tipo() devolvem a chave pública e o tipo (v2/v3) quando o reCAPTCHA está ativo. Não têm chamadores no core: o CAPTCHA atual passa por gestor_captcha_validar().
Auxiliares internos: formulario_email_cabecalho_normalizar(), formulario_form_action_resolver() (ação vazia aponta para o processador canônico), formulario_email_reply_to_resolver(), formulario_email_reply_to_nome_resolver(), formulario_email_assunto_resolver(), formulario_email_mensagem_resolver(), formulario_email_template_processar().
Funções
Gerado a partir de gestor/bibliotecas/formulario.php · 21 funções
formulario_parse_limits
ver no código · linha 28 ↗formulario_parse_limits(mixed $options): arrayExtrai diretivas de limite (min/max/step) das linhas do campo "Opções" de um campo de formulário. Aceita string multilinha ou array de linhas no formato min:X, max:Y, step:Z.
Parâmetros
$optionsmixed- Conteúdo do campo options.
Retorno
formulario_email_cabecalho_normalizar
ver no código · linha 46 ↗formulario_email_cabecalho_normalizar($valor)Normaliza uma string destinada a cabeçalhos de e-mail, removendo tags e quebras de linha.
Parâmetros
$valor
formulario_form_action_resolver
ver no código · linha 58 ↗formulario_form_action_resolver($form_action, $url_raiz)Resolve a action pública do formulário; vazio sempre aponta para o processador canônico.
Parâmetros
$form_action$url_raiz
formulario_email_reply_to_resolver
ver no código · linha 74 ↗formulario_email_reply_to_resolver(...$candidatos)Retorna o primeiro endereço de e-mail válido da lista de candidatos.
Parâmetros
$candidatos
formulario_email_reply_to_nome_resolver
ver no código · linha 88 ↗formulario_email_reply_to_nome_resolver(...$candidatos)Retorna o primeiro nome de remetente não vazio, já seguro para cabeçalho.
Parâmetros
$candidatos
formulario_email_assunto_resolver
ver no código · linha 100 ↗formulario_email_assunto_resolver($assunto, $assunto_padrao)Aplica o assunto padrão quando o valor configurado está vazio ou contém somente espaços.
Parâmetros
$assunto$assunto_padrao
formulario_email_mensagem_resolver
ver no código · linha 110 ↗formulario_email_mensagem_resolver($email_data, $carregar_componente = null)Carrega o componente customizado e recua obrigatoriamente para forms-prepared-email se necessário.
Parâmetros
$email_data$carregar_componente
formulario_email_template_processar
ver no código · linha 135 ↗formulario_email_template_processar($mensagem, $numero, $form_name, $fields, $dados)Preenche as variáveis gerais e a célula repetível do template de notificação.
Parâmetros
$mensagem$numero$form_name$fields$dados
formulario_incluir_js
ver no código · linha 199 ↗formulario_incluir_js(array|false $params = false): voidInclui JavaScript da biblioteca de formulários na página.
Parâmetros
$paramsarray|false- Parâmetros da função.
Retorno
formulario_email_processar_imagens
ver no código · linha 229 ↗formulario_email_processar_imagens(string $html): arrayProcessa imagens locais no HTML do email para embedding automático.
Parâmetros
$htmlstring- HTML do email a ser processado.
Retorno
formulario_montar_js_vars
ver no código · linha 303 ↗formulario_montar_js_vars(array $formIds, string|null $formAjaxOpcao = null): arrayMonta as variáveis JS (gestor.form[id]) de um ou mais formulários.
Parâmetros
$formIdsarray- Lista de IDs de formulário.
$formAjaxOpcaostring|null- Opção AJAX (opcional).
Retorno
formulario_controlador
ver no código · linha 510 ↗formulario_controlador(array|false $params = false): voidControlador de Formulários.
Parâmetros
$paramsarray|false- Parâmetros da função.
Retorno
formulario_processador
ver no código · linha 563 ↗formulario_processador(array|false $params = false): voidProcessador de Formulários.
Parâmetros
$paramsarray|false- Parâmetros da função.
Retorno
formulario_acesso_verificar
ver no código · linha 1123 ↗formulario_acesso_verificar(array|false $params = false): arrayVerifica estado de acesso para formulários com proteção anti-spam.
Parâmetros
$paramsarray|false- Parâmetros (tipo obrigatório).
Retorno
formulario_acesso_cadastrar
ver no código · linha 1191 ↗formulario_acesso_cadastrar(array|false $params = false): voidCadastra tentativa de acesso para formulários com controle anti-spam.
Parâmetros
$paramsarray|false- Parâmetros (tipo obrigatório, antispam opcional, maximoCadastros opcional, maximoCadastrosSimples opcional).
Retorno
formulario_acesso_falha
ver no código · linha 1346 ↗formulario_acesso_falha(array|false $params = false): voidRegistra falha de acesso para formulários.
Parâmetros
$paramsarray|false- Parâmetros (tipo obrigatório, maximoCadastros opcional, maximoCadastrosSimples opcional).
Retorno
formulario_acessos_limpeza
ver no código · linha 1479 ↗formulario_acessos_limpeza(array|false $params = false): voidLimpa registros antigos das tabelas de formulários.
Parâmetros
$paramsarray|false- Parâmetros da função.
Retorno
formulario_validacao
ver no código · linha 1531 ↗formulario_validacao(array|false $params = false): voidConfigura validação de formulário com regras personalizadas.
Parâmetros
$paramsarray|false- Parâmetros da função.
Retorno
formulario_validacao_campos_obrigatorios
ver no código · linha 1932 ↗formulario_validacao_campos_obrigatorios(array|false $params = false): voidValida campos obrigatórios no servidor (server-side).
Parâmetros
$paramsarray|false- Parâmetros da função.
Retorno
formulario_google_recaptcha
ver no código · linha 2020 ↗formulario_google_recaptcha(): string|nullObtém chave do site Google reCAPTCHA.
Retorno
formulario_google_recaptcha_tipo
ver no código · linha 2089 ↗formulario_google_recaptcha_tipo(): string|nullObtém tipo de Google reCAPTCHA configurado.
Retorno