Jump to content
TheSuzho

[TUTORIAL PHP] Crear tu propio captcha simple

Recommended Posts

*Nuevos LINKS ( 02/05/2014 21:04 )

 

Buenas, soy TheSuzho y aca os traigo un tutorial hecho 100% por mi, podeis buscar por google que no vereis otro igual, si quereis mas tutoriales de algo referente a programacion web (html, css, php), o ayuda podeis pedirmelo en comentarios u otros medios.

 

Si no tienes ganas de ver el tutorial completo y quieres descargarlo: 

Debes iniciar sesión para ver el contenido del enlace en esta publicación.

Para ver la demo de como funciona: 

Debes iniciar sesión para ver el contenido del enlace en esta publicación.

 

Empecemos:

 

Lo primero de todo es crear el archivo .php donde vallamos a crearlo.

Agregamos los TAGS php para empeza

<?php?>

Paso 1: Preguntas y Respuestas

Ahora vamos a crear un array con las preguntas y las respuestas respectivamente.

$_A_CAP_SZ_ = array ('__PREGUNTAS__' => array (1 => 'Cuanto es 1 + 2',2 => 'Cuanto es 2 * 2'),'__RESPUESTAS__' => array (1 => 3,2 => 4),);

Para editar las preguntas y respuestas solo vale con cambiar la linea despues de =>, por ejemplo, añadimos una pregunta.

En este caso, como podeis ver, hay 2 preguntas, añadimos una nueva linea debajo de la pregunta 2

3 => 'Capital de españa'

Ahora como hemos creado otra linea, devemos asegurarnos de que la linea anterior acabe en coma, algo asi

1 => 'Cuanto es 1 + 2',2 => 'Cuanto es 2 * 2',3 => 'Capital de españa'

Ahora vamos a hacer lo mismo pero en el apartado respuestas, agregaremos la respuesta a la pregunta nº 3, en este caso, añadimos una nueva linea bajo la respuesta nº 2.

3 => 'Madrid'

Ahora como hemos creado otra linea, devemos asegurarnos de que la linea anterior acabe en coma, algo asi

1 => 3,2 => 4,3 => 'Madrid'

Paso 2: Obtener una pregunta aleatoria

Para obtener una pregunta aleatoria, basta con añadir abajo del array la siguiente linea:

DEFINE(aaii,rand(1,3));

Donde pone el numero 1, es el numero inicial de preguntas, y donde pone el 3, es el total de preguntas, solo editan eso y ya esta.

 

 

Paso 3: Crear la función que verifica si es o no correcto

Lo primero de todo es definir la funcion:

function _CHECK_CAPTCHA_($R,$rr){}

“$R´´ sera el resultado que manda el formulario, y “$rr´´ sera la respuesta, ahora vamos a convertir el texto a minusculas para evitar errores de minusculas y mayusculas, agregamos a la función:

$R = strtolower($R);$rr = strtolower($rr);

Ahora solo tenemos que hacer que la funcion nos devueva el resultado TRUE si es correcto y FALSE si es incorrecto, añadimos las siguientes lineas:

if ($R == $rr){return true;}else{return false;}

Os deve quedar una cosa asi:

function _CHECK_CAPTCHA_($R,$rr){$R = strtolower($R);$rr = strtolower($rr);if ($R == $rr){return true;}else{return false;}}

Paso 4: Reconocer cuando das click en comprovar y comprovar si es correcto

Para ello, creamos una nueva linea:

if (isset($_POST['_INPUT_CAPTCHA_'])){if (_CHECK_CAPTCHA_($_POST['_INPUT_CAPTCHA_'],$_A_CAP_SZ_['__RESPUESTAS__'][$_POST['_INPUT_CAP_RE_']]) == true){echo 'Captcha correcto – <a href="?reload">RELOAD PAGE</a>';}else{echo 'Incorrecto – <a href="?reload">RELOAD PAGE</a>';}}else{echo '<form method="post">'.$_A_CAP_SZ_['__PREGUNTAS__'][aaii].' <input type="text" value="" name="_INPUT_CAPTCHA_"><input type="hidden" value="'.aaii.'" name="_INPUT_CAP_RE_"><input type="submit" value="verificar"></form>';}

Esto lo que ara, es si das al boton de verificar, no mostrara el formulario, si no el resultado de si esta correcto o no.

Espero que os aya gustado y lo entendais bien.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...