{"id":9345,"date":"2017-01-25T16:28:10","date_gmt":"2017-01-25T15:28:10","guid":{"rendered":"http:\/\/www.palentino.es\/blog\/?p=9345"},"modified":"2017-01-25T16:31:44","modified_gmt":"2017-01-25T15:31:44","slug":"captcha-sencillo-en-php-explicacion","status":"publish","type":"post","link":"https:\/\/www.palentino.es\/blog\/captcha-sencillo-en-php-explicacion\/","title":{"rendered":"Captcha sencillo en PHP. Explicaci\u00f3n."},"content":{"rendered":"<p>En esta entrada os dejo el c\u00f3digo fuente y la explicaci\u00f3n de c\u00f3mo funciona un sistema de protecci\u00f3n sencillo contra Spam tipo Captcha.<\/p>\n<p>Actualmente existen sistemas m\u00e1s avanzados, por reconocimiento de im\u00e1genes, mediante patrones, etc.<\/p>\n<p>Todos ellos bajo la misma premisa de funcionamiento, y es, evitar que cualquier robot env\u00ede mensajes de correo de forma masiva, es por ello que tenemos que demostrar mediante el captcha y los caracteres en este caso, que somos personas.<\/p>\n<p>Este ejemplo, resume la filosof\u00eda de funcionamiento. Aplicable si deseamos convertirlo a otros lenguajes.<\/p>\n<p><!--more--><\/p>\n<pre class=\"lang:php decode:true \">&lt;?php\r\n\r\nsession_start(); # iniciamos la sesion\r\n\r\n$numero = rand(1000,9999); # generamos un numero aleatorio\r\n\r\n$_SESSION['codigo'] = $numero; # guardamos el numero en una variable de sesi\u00f3n\r\nheader(\"Content-type: image\/png\");\r\n\r\n# declaramos im con la creaci\u00f3n de una imagen\r\n$im = imagecreate(80, 25);\r\n\r\n# indicamos el color del fondo (RGB)\r\n$fondo = imagecolorallocate($im, 0, 0, 0); # el color del fondo seria blanco, se puede editar\r\n\r\n# indicamos el color del texto (RGB)\r\n$texto = imagecolorallocate($im, 255, 255, 255); # el color de las letras seria blanco, se puede editar\r\n\r\n# creacion del texton dentro de la imagen\r\nimagestring($im, 12, 20, 5, $_SESSION['codigo'], $texto);\r\n\r\n# se crea la imagen, la imagen ser\u00e1 formato PNG\r\nimagepng($im);\r\n?&gt;\r\n\r\n<\/pre>\n<p>El c\u00f3digo superior lo guardamos en un fichero php, lo llamamos como deseemos. Ejemplo: mi_captcha_palentino.php<\/p>\n<p>El c\u00f3digo inferior corresponde con un fragmento del formulario que deseemos enviar. Comentado l\u00ednea por l\u00ednea<\/p>\n<pre class=\"lang:php decode:true\">&lt;?php\r\nsession_start(); # importante iniciar session al comienzo de la p\u00e1gina\r\n\r\nif($_POST['enviar']){ \r\nsession_start(); # iniciamos la sesion\r\nif($_POST['captcha'] == $_SESSION['codigo']) # comprobamos que el campo captcha, sea igual que el codigo generado\r\n{\r\necho(\"El C\u00f3digo introducido es correcto\"); # A partir de esta condici\u00f3n podemos seguir realizando comprobaciones.\r\n}else{\r\necho(\"El c\u00f3digo introducido es INCORRECTO\");  \r\n}\r\n}\r\n?&gt; \r\n&lt;img src=\"mi_captcha_palentino.php\"&gt;&lt;br\/&gt; &lt;!-- Se puede observar d\u00f3nde se realiza la inclus\u00f3n del fichero superior. --&gt;\r\n\r\n&lt;form name=\"form1\" method=\"post\" action=\"\"&gt; &lt;!-- M\u00e9todo de env\u00edo mediante POST --&gt;\r\n&lt;input type=\"text\" name=\"captcha\"&gt;\r\n&lt;input type=\"submit\" name=\"enviar\"&gt;\r\n\r\n&lt;\/form&gt;<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>En esta entrada os dejo el c\u00f3digo fuente y la explicaci\u00f3n de c\u00f3mo funciona un sistema de protecci\u00f3n sencillo contra Spam tipo Captcha. Actualmente existen sistemas m\u00e1s avanzados, por reconocimiento de im\u00e1genes, mediante patrones, etc. Todos ellos bajo la misma premisa de funcionamiento, y es, evitar que cualquier robot env\u00ede mensajes de correo de forma masiva, es por ello que tenemos que demostrar mediante el captcha y los caracteres en este caso, que somos personas. Este ejemplo, resume la filosof\u00eda de funcionamiento. Aplicable si deseamos convertirlo a otros lenguajes.<\/p>\n","protected":false},"author":1,"featured_media":3594,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[46],"tags":[],"class_list":["post-9345","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php"],"_links":{"self":[{"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/posts\/9345","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/comments?post=9345"}],"version-history":[{"count":6,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/posts\/9345\/revisions"}],"predecessor-version":[{"id":9351,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/posts\/9345\/revisions\/9351"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/media\/3594"}],"wp:attachment":[{"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/media?parent=9345"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/categories?post=9345"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/tags?post=9345"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}