Skip to content

WHMCS

Módulo addon oficial da CaptchaLa para WHMCS. Adiciona verificação CAPTCHA à área do cliente do WHMCS — login, cadastro, recuperação de senha, formulário de contato, envio de tickets e checkout do carrinho — sem escrever uma linha de código.

Diferente de um simples widget com site-key, cada desafio é respaldado por um token de uso único emitido pelo servidor (anti-replay), e nenhum rastreador de terceiros é carregado.

O que ele cobre

Cada superfície abaixo é um toggle individual nas configurações do módulo — habilite só as que você quer proteger.

  • Login
  • Cadastro
  • Recuperação de senha
  • Formulário de contato
  • Envio de tickets
  • Checkout do carrinho

Requisitos

  • WHMCS 8.x e 9.x (testado na área do cliente 8.3 e 9.0; funciona com os temas six e twenty-one, com ou sem Friendly URLs)
  • PHP 8.0+ (o próprio WHMCS 9.0 exige PHP 8.2+)
  • Uma conta CaptchaLa — obtenha sua App Key + App Secret em dash.captcha.la

Instalação

1. Instale o módulo

  1. Baixe o whmcs-x.y.z.zip mais recente nas releases.
  2. Extraia-o no diretório raiz do WHMCS. Isso adiciona modules/addons/captchala/.
  3. No admin do WHMCS, vá em Setup → Addon Modules, encontre CaptchaLa e clique em Activate.

2. Configure

Clique em Configure e então:

  1. Cole sua App Key e seu App Secret.
  2. Escolha um Widget mode e um Theme.
  3. Ative os formulários que deseja proteger.
  4. Clique em Save Changes.

Abra a página CaptchaLa no menu lateral do admin para rodar um teste de conexão ao vivo contra o painel.

TIP

Após ativar, se o widget não aparecer, salve as configurações do módulo novamente uma vez — o WHMCS só registra o hooks.php de um módulo quando ele é (re)ativado/salvo.

Configuração

Todas as configurações ficam em Setup → Addon Modules → CaptchaLa → Configure.

ConfiguraçãoTipoPadrãoDescrição
App KeystringChave pública do painel da CaptchaLa. Obrigatória.
App SecretstringSegredo do servidor, usado para emitir e validar tokens. Obrigatório; nunca exposto ao navegador.
Widget modeenumpopuppopup (barra disparadora → desafio em tela cheia), float (painel inline), embed (checkbox inline), bind (invisível, intercepta o envio).
ThemeenumdefaultPreset de cor: default, dark, slate, emerald, amber, rose.
LanguagestringautoCódigo BCP-47 (ex. en, zh, de) ou auto para seguir o navegador.
Protect loginboolonAplica o desafio ao login da área do cliente.
Protect registrationboolonAplica o desafio ao cadastro de novas contas.
Protect password resetboolonAplica o desafio ao formulário de recuperação de senha.
Protect contact formbooloffAplica o desafio ao formulário de contato.
Protect ticket submissionbooloffAplica o desafio à etapa final de envio de tickets.
Protect cart checkoutbooloffAplica o desafio ao checkout do carrinho.
Skip for logged-in usersboolonNão aplica o desafio a visitantes que já têm uma sessão de cliente.
Failure messagestringMensagem exibida quando a verificação falha.

Como funciona

Em cada página de formulário protegido, o módulo emite um novo token de servidor (sct_) do painel, escopado para a action daquele formulário, e renderiza o widget vinculado a ele. Depois que o visitante resolve o desafio, o SDK escreve um token de passe de uso único (pt_) no formulário. No envio, o módulo valida esse pt_ do lado do servidor antes que o WHMCS processe o formulário; replays e divergências de action são rejeitados.

Se o painel estiver temporariamente inacessível, o módulo falha em aberto (deixa o envio passar) para que sua área do cliente nunca fique bloqueada por uma falha pontual upstream.

FAQ

O módulo é gratuito?

Sim. O módulo é gratuito. O plano gratuito da CaptchaLa cobre 10.000 verificações por mês — planos pagos só se aplicam se você precisar de mais volume.

Funciona tanto no WHMCS 8 quanto no 9?

Sim — testado na área do cliente 8.3 e 9.0, com os temas six e twenty-one, com ou sem Friendly URLs.

O widget não aparece.

Salve as configurações do módulo novamente uma vez (Configure → Save Changes). O WHMCS só registra o hooks.php quando o módulo é (re)ativado/salvo.

Código-fonte

MIT-licensed examples · CaptchaLa is operated independently