Path in the Gestor bibliotecas/formulario.php
Three roles:
-
Public forms (those of the
formsmodule):formulario_controlador()prepares the page andformulario_processador()receives the submission. -
Admin panel form validation:
formulario_validacao()builds the browser-side rules, used by interface.php and several modules. -
Forms' own CAPTCHA and per-IP limits.
On the page: formulario_controlador()
formulario_controlador(['formId' => 'contact']); // or ['contact', 'newsletter']It builds each form's configuration (formulario_montar_js_vars(): fields, rules, texts, CAPTCHA) and exposes it in gestor.form[<id>]; with a single id, also in the old flat format. It includes the library JS once. In ~1% of calls, it cleans expired accesses (formulario_acessos_limpeza()).
On submission: formulario_processador()
It answers over AJAX ($_GESTOR['ajax-json']) to the form POST (_formId and the fields), in this order:
-
Honeypot: a filled
honeypotfield = bot. -
Submission age: the browser-sent
timestampmust be at most 2 days old. -
Definition of the form in the
formstable (current language): name,fields_schemaand status (inactive = rejected). -
Per-IP limit (
formulario_acesso_verificar()), per form:bloqueadorejects. -
CAPTCHA (seguranca.php): with Turnstile, always; with reCAPTCHA, from the
antispamstatus on or when the schema hasforce_recaptcha: true; a failed v3 can fall back to v2 (status: require_v2) if v2 is active. -
Schema fields: required ones, valid e-mail and URL, minimum length (3 for text, or the one in Options) and maximum (254 for text/email/password/url, 10000 for textarea, 1000 for the rest), number and date ranges from Options (
formulario_parse_limits():min:,max:,step:). -
Stores into
forms_submissions(submission name from the schema'sfield_name, thenamefield or the first text field).passwordfields are stored empty. -
Counts the submission in the per-IP limit (
formulario_acesso_cadastrar()). -
Notification e-mail: recipients from the schema's
email.recipients(separated by;, acceptingName <email>), or the.envsender; subject, reply-to (the first valid e-mail of the submission) and the form's message component, falling back toforms-prepared-email(formulario_email_*). Before sending, theformulario.email.mensagemfilter (hooks) can change the HTML, and site images become embedded attachments (formulario_email_processar_imagens()). -
Stores
email_statusin the submission and returns success with the redirect (/sucesso/by default).
Limits from the .env: FORMULARIOS_MAXIMO_CADASTROS and FORMULARIOS_MAXIMO_CADASTROS_SIMPLES (overridable by access_max and access_max_simple in the schema), plus the block and cleanup times (formularios-* in global variables). The logic is the same as the attempt control, in formulario_acesso_verificar(), formulario_acesso_cadastrar() and formulario_acesso_falha().
Admin panel validation: formulario_validacao()
formulario_validacao([
'formId' => 'form-usuarios',
'validacao' => [
['regra' => 'email', 'campo' => 'email', 'label' => 'E-mail'],
['regra' => 'texto-obrigatorio', 'campo' => 'nome', 'label' => 'Name'],
],
]);It builds the Fomantic UI rules for the form, with error texts from the variables. Rules: nao-vazio, texto-obrigatorio, texto-obrigatorio-verificar-campo, selecao-obrigatorio, email, email-comparacao, email-comparacao-verificar-campo, senha, senha-comparacao and manual. formulario_validacao_campos_obrigatorios() does the server-side check and, if something is missing, shows the alert and redirects. formulario_incluir_js() includes the validation script.
Legacy reCAPTCHA
formulario_google_recaptcha() and formulario_google_recaptcha_tipo() return the public key and the type (v2/v3) when reCAPTCHA is active. They have no callers in the core: the current CAPTCHA goes through gestor_captcha_validar().
Internal helpers: formulario_email_cabecalho_normalizar(), formulario_form_action_resolver() (an empty action points to the canonical processor), formulario_email_reply_to_resolver(), formulario_email_reply_to_nome_resolver(), formulario_email_assunto_resolver(), formulario_email_mensagem_resolver(), formulario_email_template_processar().
Functions
Generated from gestor/bibliotecas/formulario.php · 21 functions
formulario_parse_limits
view source · line 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.
Parameters
$optionsmixed- Conteúdo do campo options.
Returns
formulario_email_cabecalho_normalizar
view source · line 46 ↗formulario_email_cabecalho_normalizar($valor)Normaliza uma string destinada a cabeçalhos de e-mail, removendo tags e quebras de linha.
Parameters
$valor
formulario_form_action_resolver
view source · line 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.
Parameters
$form_action$url_raiz
formulario_email_reply_to_resolver
view source · line 74 ↗formulario_email_reply_to_resolver(...$candidatos)Retorna o primeiro endereço de e-mail válido da lista de candidatos.
Parameters
$candidatos
formulario_email_reply_to_nome_resolver
view source · line 88 ↗formulario_email_reply_to_nome_resolver(...$candidatos)Retorna o primeiro nome de remetente não vazio, já seguro para cabeçalho.
Parameters
$candidatos
formulario_email_assunto_resolver
view source · line 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.
Parameters
$assunto$assunto_padrao
formulario_email_mensagem_resolver
view source · line 110 ↗formulario_email_mensagem_resolver($email_data, $carregar_componente = null)Carrega o componente customizado e recua obrigatoriamente para forms-prepared-email se necessário.
Parameters
$email_data$carregar_componente
formulario_email_template_processar
view source · line 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.
Parameters
$mensagem$numero$form_name$fields$dados
formulario_incluir_js
view source · line 199 ↗formulario_incluir_js(array|false $params = false): voidInclui JavaScript da biblioteca de formulários na página.
Parameters
$paramsarray|false- Parâmetros da função.
Returns
formulario_email_processar_imagens
view source · line 229 ↗formulario_email_processar_imagens(string $html): arrayProcessa imagens locais no HTML do email para embedding automático.
Parameters
$htmlstring- HTML do email a ser processado.
Returns
formulario_montar_js_vars
view source · line 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.
Parameters
$formIdsarray- Lista de IDs de formulário.
$formAjaxOpcaostring|null- Opção AJAX (opcional).
Returns
formulario_controlador
view source · line 510 ↗formulario_controlador(array|false $params = false): voidControlador de Formulários.
Parameters
$paramsarray|false- Parâmetros da função.
Returns
formulario_processador
view source · line 563 ↗formulario_processador(array|false $params = false): voidProcessador de Formulários.
Parameters
$paramsarray|false- Parâmetros da função.
Returns
formulario_acesso_verificar
view source · line 1123 ↗formulario_acesso_verificar(array|false $params = false): arrayVerifica estado de acesso para formulários com proteção anti-spam.
Parameters
$paramsarray|false- Parâmetros (tipo obrigatório).
Returns
formulario_acesso_cadastrar
view source · line 1191 ↗formulario_acesso_cadastrar(array|false $params = false): voidCadastra tentativa de acesso para formulários com controle anti-spam.
Parameters
$paramsarray|false- Parâmetros (tipo obrigatório, antispam opcional, maximoCadastros opcional, maximoCadastrosSimples opcional).
Returns
formulario_acesso_falha
view source · line 1346 ↗formulario_acesso_falha(array|false $params = false): voidRegistra falha de acesso para formulários.
Parameters
$paramsarray|false- Parâmetros (tipo obrigatório, maximoCadastros opcional, maximoCadastrosSimples opcional).
Returns
formulario_acessos_limpeza
view source · line 1479 ↗formulario_acessos_limpeza(array|false $params = false): voidLimpa registros antigos das tabelas de formulários.
Parameters
$paramsarray|false- Parâmetros da função.
Returns
formulario_validacao
view source · line 1531 ↗formulario_validacao(array|false $params = false): voidConfigura validação de formulário com regras personalizadas.
Parameters
$paramsarray|false- Parâmetros da função.
Returns
formulario_validacao_campos_obrigatorios
view source · line 1932 ↗formulario_validacao_campos_obrigatorios(array|false $params = false): voidValida campos obrigatórios no servidor (server-side).
Parameters
$paramsarray|false- Parâmetros da função.
Returns
formulario_google_recaptcha
view source · line 2020 ↗formulario_google_recaptcha(): string|nullObtém chave do site Google reCAPTCHA.
Returns
formulario_google_recaptcha_tipo
view source · line 2089 ↗formulario_google_recaptcha_tipo(): string|nullObtém tipo de Google reCAPTCHA configurado.
Returns