Tutorial: Añadir verificación humana en formulario de registro de Wordpress

OsKaR Seguir

Zeta
Verificación en dos pasos desactivada
Desde
15 Ago 2010
Mensajes
1.552
Bueno, aquí os dejo un sencillo código con el cual vamos a comprobar si los usuarios que se registran en nuestro blog son humanos o no, añadir esto a vuestro functions.php y no volveréis a tener problemas. :)

PHP:
<?php
// campos personalizados registro
add_action('register_form','show_spam_field');
add_action('register_post','check_fields',10,3);

// añadimos campo spam
function show_spam_field(){
?>

<p>
<label>&iquest;Cuanto es 15+2?<br />
<input id="spam" class="input" type="text" tabindex="20" size="25" value="<?php echo $_POST['spam']; ?>" name="spam"/>
</label>
</p>
<?php
}

// mostramos error si no coincide
function check_fields($login, $email, $errors) {
	if ($_POST['spam'] !='17') {
		$errors->add('empty_antispam', "<strong>ERROR</strong>: Introduce bien la pregunta de seguridad");
	}
}

Como veis es bastante sencillo, editar el número o la pregunta por la que vosotros queráis, de esta forma no tendréis que hacer uso de plugins externos y de su odiosas instalaciones. ;)
 

Carlos Arreola

Admin
Sigma
Verificado
Verificación en dos pasos activada
Verificado por Whatsapp
Verificado por Binance
¡Excelente comerciante!
Suscripción a IA
Desde
6 Abr 2009
Mensajes
11.543
Tema aprobado, gracias por el aporte.
 

Wytzklaw

Préstamo
Eta
Verificación en dos pasos desactivada
Desde
3 Oct 2012
Mensajes
1.287
¿Me supongo que podrá adaptarse a una forma de contacto reemplazando register_form por contact_form?

Mañana lo pruebo, muchas gracias por dato.

- - - Actualizado - - -

¿Se le pueden añadir más preguntas y que aparezcan arbitrariamente?
 

Cicklow

Admin
Épsilon
Verificado
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Suscripción a IA
Desde
30 May 2011
Mensajes
977
que sea mas aleatorio:
PHP:
 <?php
// campos personalizados registro
add_action('register_form','show_spam_field');
add_action('register_post','check_fields',10,3);

//Cambiar el numero 5 por otro numero asi no tienen el mismo que el tutorial!
$SUMANU = 5;
function encriptarcadena($X){
	global $SUMANU;
	$ZZ = "";
	for($i=0;$i<strlen($X);$i++){
		$TT = substr($X,$i,1);
		$ZZ .=(ord($TT) - $SUMANU);
	}
	return $ZZ;
}

function desencriptarcadena($X){
	global $SUMANU;
	$ZZ = "";
	for($i=0;$i<strlen($X);$i+=2){
		$TT = substr($X,$i,2);
		$ZZ .= chr($TT + $SUMANU);
	}
	return $ZZ;
}

// añadimos campo spam
function show_spam_field(){
$A = mt_rand(1,25);
$B = mt_rand(5,30);
?>
<p>
<label>&iquest;Cuanto es <?=$A.'+'.$B;?>?<br />
<input id="spam" class="input" type="text" tabindex="20" size="25" value="" name="spam"/>
<input id="nospam_a" class="input" type="hidden" value="<?=encriptarcadena($A); ?>" name="spamA"/>
<input id="nospam_b" class="input" type="hidden" value="<?=encriptarcadena($B); ?>" name="spamB"/>
</label>
</p>
<?php
}

// mostramos error si no coincide
function check_fields($login, $email, $errors) {
    $RES = (desencriptarcadena($_POST['spamA']) + desencriptarcadena($_POST['spamB']));

    if ($RES != $_POST['spam'] ) {
        $errors->add('empty_antispam', $RES."<strong>ERROR</strong>: Introduce bien la pregunta de seguridad");
    }
}

Lo que hace es sacar números aleatorios para la verificación humana, luego usando unas funciones de encriptacion y desencriptacion verificamos la suma (usamos esas funciones para ocultar de la vista los numeros que usaremos en la verificacion)
 

edizzz

Gamma
Verificación en dos pasos desactivada
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
5 Oct 2012
Mensajes
182
Perfecto, la segunda opción me gusto mucho más, los turoriales de cicklow como siempre me salvan la vida, gracias
 

Lord Pepe

Ni
Verificación en dos pasos desactivada
Desde
25 Jul 2013
Mensajes
3.612
A favoritos, seguro en algún momento futuro lo requiero, la cosa luego será encontrarlo entre tanta página guardada en favoritos.
 

Misael Alemán

Mi
Redactor
Verificación en dos pasos desactivada
Desde
22 Jul 2013
Mensajes
3.104
que sea mas aleatorio:
PHP:
 <?php
// campos personalizados registro
add_action('register_form','show_spam_field');
add_action('register_post','check_fields',10,3);

//Cambiar el numero 5 por otro numero asi no tienen el mismo que el tutorial!
$SUMANU = 5;
function encriptarcadena($X){
	global $SUMANU;
	$ZZ = "";
	for($i=0;$i<strlen($X);$i++){
		$TT = substr($X,$i,1);
		$ZZ .=(ord($TT) - $SUMANU);
	}
	return $ZZ;
}

function desencriptarcadena($X){
	global $SUMANU;
	$ZZ = "";
	for($i=0;$i<strlen($X);$i+=2){
		$TT = substr($X,$i,2);
		$ZZ .= chr($TT + $SUMANU);
	}
	return $ZZ;
}

// añadimos campo spam
function show_spam_field(){
$A = mt_rand(1,25);
$B = mt_rand(5,30);
?>
<p>
<label>¿Cuanto es <?=$A.'+'.$B;?>?<br />
<input id="spam" class="input" type="text" tabindex="20" size="25" value="" name="spam"/>
<input id="nospam_a" class="input" type="hidden" value="<?=encriptarcadena($A); ?>" name="spamA"/>
<input id="nospam_b" class="input" type="hidden" value="<?=encriptarcadena($B); ?>" name="spamB"/>
</label>
</p>
<?php
}

// mostramos error si no coincide
function check_fields($login, $email, $errors) {
    $RES = (desencriptarcadena($_POST['spamA']) + desencriptarcadena($_POST['spamB']));

    if ($RES != $_POST['spam'] ) {
        $errors->add('empty_antispam', $RES."<strong>ERROR</strong>: Introduce bien la pregunta de seguridad");
    }
}

Lo que hace es sacar números aleatorios para la verificación humana, luego usando unas funciones de encriptacion y desencriptacion verificamos la suma (usamos esas funciones para ocultar de la vista los numeros que usaremos en la verificacion)

Hay alguna manera de hacer esta verificación en el formulario del login de wordpress?
 

Mikaby

Épsilon
Hospedaje
Verificación en dos pasos desactivada
Desde
4 Dic 2014
Mensajes
783
[MENTION=9679]cicklow[/MENTION] que manera de llevarte con los códigos! Gracias también al que hizo el aporte!
 

edizzz

Gamma
Verificación en dos pasos desactivada
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
5 Oct 2012
Mensajes
182
Hola de vuelta por aquí con un problema, implante este codigo a mi web, si funciona perfecto si quieren verificarlo Edizzz.com ? Formulario de registro Pero acabo de entrar a mi email y me doy cuenta que continuan registrandose en mi web con email .pl con nombres extraños, ¿consiguen responder las preguntas? porque yo lo probé varias veces y si sumo mal sale el error, usé el script de [MENTION=9679]cicklow[/MENTION]
 

¡Regístrate y comienza a ganar!

Beneficios

  • Gana dinero por participar
  • Gana dinero por recomendarnos
  • Descubre ofertas de empleo diariamente
  • Negocios seguros
  • ¡Información premium y más!

Acceder

¿Ya tienes una cuenta? Accede aquí

Arriba