Captcha con PHP
Miércoles, 5. Agosto 2009
Aqui los codes de unos captchas que hice =)
captcha solo texto:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <?php //hacemos un array con las lestras o numeros que queremos $le = array(1 => "0", 2 => "1", 3 => "2", 4 => "3", 5 => "4", 6 => "5", 7 => "6", 8 => "7", 9 => "8", 10 => "9", 11 => "a", 12 => "b", 13 => "c", 14 => "d", 15 => "e", 16 => "f", 17 => "g", 18 => "h", 19 => "i", 20 => "j", 21 => "k", 22 => "l", 23 => "m", 24 => "n", 25 => "o", 26 => "p", 27 => "q", 28 => "r", 29 => "s", 30 => "t", 31 => "u", 32 => "v", 33 => "w", 34 => "x", 35 => "y", 36 => "z", 37 => "A", 38 => "B", 39 => "C", 40 => "D", 41 => "E", 42 => "F", 43 => "G", 44 => "H", 45 => "I", 46 => "J", 47 => "K", 48 => "L", 49 => "M", 50 => "N", 51 => "O", 52 => "P", 53 => "Q", 54 => "R", 55 => "S", 56 => "T", 57 => "U", 58 => "V", 59 => "W", 60 => "X", 61 => "Y", 62 => "Z"); //usamos la funcion rand para obtener los caracteres aleatoriamente $ra = rand(1, 7); $ra2 = rand(8, 14); $ra3 = rand(15, 21); $ra4 = rand(22, 28); $ra5 = rand(29, 35); $ra6 = rand(36, 42); $ra7 = rand(43, 49); $ra8 = rand(50, 62); //concatenamos los caracteres $capt = $le[$ra] . $le[$ra2] . $le[$ra3] . $le[$ra4] . $le[$ra5] . $le[$ra6] . $le[$ra7] . $le[$ra8]; $_SESSION['captcha'] = $capt; ?> |
Ahora para implementarlo seria asi:
1 2 3 4 5 6 7 8 9 10 | <?php echo "<br>" . $capt . " <br /> <form action=\"\" method=\"POST\"> <input type=\"text\" name=\"captcha\" size=\"8\" maxlength=\"8\" /> <br /> <br /> <input type=\"submit\" value=\"asd =)\" /> </form>"; ?> |
Para comprobar el captcha:
1 2 3 4 5 6 | <?php $captcha = htmlspecialchars(trim($_POST['captcha'])); if ($captcha != $_SESSION['captcha']) { echo "El captcha es incorrecto<br><a href=javascript:history.back()>Regresar</a>"; } ?> |
Haciendo captcha con una imagen, es lo mismo solo creamos una imagen.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <?php header("Content-type: image/png"); //hacemos un array con las lestras o numeros que queremos $le = array(1 => "0", 2 => "1", 3 => "2", 4 => "3", 5 => "4", 6 => "5", 7 => "6", 8 => "7", 9 => "8", 10 => "9", 11 => "a", 12 => "b", 13 => "c", 14 => "d", 15 => "e", 16 => "f", 17 => "g", 18 => "h", 19 => "i", 20 => "j", 21 => "k", 22 => "l", 23 => "m", 24 => "n", 25 => "o", 26 => "p", 27 => "q", 28 => "r", 29 => "s", 30 => "t", 31 => "u", 32 => "v", 33 => "w", 34 => "x", 35 => "y", 36 => "z", 37 => "A", 38 => "B", 39 => "C", 40 => "D", 41 => "E", 42 => "F", 43 => "G", 44 => "H", 45 => "I", 46 => "J", 47 => "K", 48 => "L", 49 => "M", 50 => "N", 51 => "O", 52 => "P", 53 => "Q", 54 => "R", 55 => "S", 56 => "T", 57 => "U", 58 => "V", 59 => "W", 60 => "X", 61 => "Y", 62 => "Z"); //usamos la funcion rand para obtener los caracteres aleatoriamente $ra = rand(1, 7); $ra2 = rand(8, 14); $ra3 = rand(15, 21); $ra4 = rand(22, 28); $ra5 = rand(29, 35); $ra6 = rand(36, 42); $ra7 = rand(43, 49); $ra8 = rand(50, 62); //concatenamos los caracteres $capt = $le[$ra] . $le[$ra2] . $le[$ra3] . $le[$ra4] . $le[$ra5] . $le[$ra6] . $le[$ra7] . $le[$ra8]; $im = imagecreate(100, 30); $fondo = imagecolorallocate($im, 255, 255, 255); $color_texto = imagecolorallocate($im, 60, 179, 113); imagestring($im, 5, 0, 0, $capt, $color_texto); imagepng($im); ?> |