Phpost
COMPLEMENTOS Captcha en Login v1.0 - Versión para impresión

+- Phpost (https://phpost.es)
+-- Foro: Risus Nova 2.0 (https://phpost.es/forum-150.html)
+--- Foro: Complementos (https://phpost.es/forum-164.html)
+---- Foro: Terminados (https://phpost.es/forum-165.html)
+---- Tema: COMPLEMENTOS Captcha en Login v1.0 (/thread-994.html)



Captcha en Login v1.0 - Tronlar - 05-28-2026

Captcha en Login v1.0
Mejora de seguridad para Risus Nova 2.0 — PHPost


Captura
[img]Registrate o inicia tu sesión para ver este contenido[/img]


Añade el captcha de Cloudflare Turnstile al formulario de login, el mismo que ya tiene el registro. Evita ataques de fuerza bruta automatizados y bots que intenten acceder a cuentas.



🛡️ Características
   


📋 Requisitos
   


🛠️ Instalación

Paso 1 — Añadir el widget en head_menu.tpl

Abre themes/default/templates/sections/head_menu.tpl y busca:

 
Código:
<input type="submit" title="Entrar" value="Entrar" style="width:198px; margin-top:5px;" class="mBtn btnOk">

Cámbialo por:
 
Código:
<div class="cf-turnstile" data-sitekey="{$tsConfig.pkey}" data-size="compact" style="margin:8px 0;"></div>
<input type="submit" title="Entrar" value="Entrar" style="width:198px; margin-top:5px;" class="mBtn btnOk">

Paso 2 — Añadir el script de Turnstile en main_header.tpl

Abre themes/default/templates/sections/main_header.tpl y añade antes de </head>:

 
Código:
<script src="Registrate o inicia tu sesión para ver este contenido" async defer></script>

Paso 3 — Verificar el captcha en ajax.login.php

Abre inc/php/ajax/ajax.login.php y busca:

 
Código:
if(empty($user) or empty($pass)) {
    echo '0: Faltan datos';
} else {

Cámbialo por:
 
Código:
if(empty($user) or empty($pass)) {
    echo '0: Faltan datos';
} else {
    // ── Verificar Turnstile ──
    $captcha = $_POST['cf-turnstile-response'] ?? '';
    if (!empty($tsCore->settings['pkey']) && !empty($tsCore->settings['skey'])) {
        $opts = ['http' => ['method' => 'POST', 'header' => 'Content-type: application/x-www-form-urlencoded', 'content' => http_build_query(['secret' => $tsCore->settings['skey'], 'response' => $captcha, 'remoteip' => $tsCore->getIP()])]];
        $res  = json_decode(@file_get_contents('Registrate o inicia tu sesión para ver este contenido false, stream_context_create($opts)), true);
        if (empty($res['success'])) { echo '0: Verifica que no eres un robot.'; break; }
    }
    // ────────────────────────

Paso 4 — Borrar la caché

Borra el contenido de la carpeta /cache/ del sitio.


🗑️ Desinstalar

Restaura las líneas originales en head_menu.tpl y ajax.login.php.

 
¿Tienes dudas o encuentras algún problema? Déjalo en los comentarios.