Exemple de capcha per formulari web amb php

Una guia rapida per la creació d’un simple capcha per formulari web amb php.

capcha-ejemplo

Exemple d’ús d’un capcha

Definició de Capcha

Consisteix en que l’usuari introdueixi correctament un conjunt de caràcters que es mostren en una imatge distorsionada que apareix per pantalla. Se suposa que una màquina no és capaç de comprendre i introduir la seqüència de forma correcta, de manera que només l’humà podria fer-ho.

Els captchas són utilitzats per evitar que robots, també anomenats spambots, puguin utilitzar certs serveis. Per exemple, perquè no puguin participar en enquestes o fòrums de discussió, registrar-se per utilitzar comptes de correu electrònic (o per el seu ús per a enviament de correu brossa) i més recentment, per evitar que un bot d’aquest tipus pugui enviar correu brossa (el remitent ha de passar el test abans que es lliuri al destinatari).

Exemple de capcha per formulari web amb php

En primer lloc ens hem de baixar el fitxer capcha.php, aquest arxiu és l’encarregat de generar el conjunt de caràcters i mostrar-los en una imatge distorsionada. Aquest fitxer l’hem de deixar en alguna carpeta del servidor web, per exemple a la carpeta d’elements d’administració admin.

En alguna part del formulari on volem afegir el capcha, hem d’afegir el següent:

capcha-formulario

El camp d’entrada capcha serà l’encarregat d’enviar el text introduït per l’usuari. La imatge del capcha és una crida a l’arxiu php, l’arxiu està en el servidor a la direcció /admin/capcha.php, si provem d’obrir el formulari de la pàgina veurem com ens va generant de manera aleatòria una seqüència de 5 lletres i nombres:

capcha-aleatorio

Ara només queda comprovar en la validació del formulari que el camp introduït per l’usuari equival al generat per l’arxiu capcha.php, ho podem fer de la següent manera:

 if(strtoupper($_REQUEST["captcha"]) == $_SESSION["captcha"]){
   $_SESSION["captcha"] = md5(rand()*time());
	   //Capcha correcto, añadimos nuestro codigo de validacion
	 }else{
		   //Capcha incorrecto, añadimos el codigo de error
 }

 

Si el capcha ha estat correctament introduït afegim el codi per a la validació del formulari, en cas incorrecte podem mostrar un missatge d’avís de capcha incorrecte.

Conclusió

Una solució molt simple però molt efectiva per no rebre spam en els formularis web, el capcha no és molt difícil de llegir i per tant no suposa un inconvenient molt important perquè l’usuari acabi enviant la sol·licitud.

Ejemplo de capcha para formulario web con php

En este post voy a explicar la creación de un simple capcha para formulario web con php.

capcha-ejemplo

Ejemplo de uso de un capcha

Definicion de Capcha

Consiste en que el usuario introduzca correctamente un conjunto de caracteres que se muestran en una imagen distorsionada que aparece en pantalla. Se supone que una máquina no es capaz de comprender e introducir la secuencia de forma correcta, por lo que solamente el humano podría hacerlo.

Los captchas son utilizados para evitar que robots, también llamados spambots, puedan utilizar ciertos servicios. Por ejemplo, para que no puedan participar en encuestas o foros de discusión, registrarse para usar cuentas de correo electrónico (o su uso para envío de correo basura) y más recientemente, para evitar que un bot de este tipo pueda enviar correo basura (el remitente debe pasar el test antes de que se entregue al destinatario).

Ejemplo de capcha para formulario web con php

En primer lugar nos debemos bajar el fichero capcha.php, este archivo es el encargado de generar el conjunto de caracteres y mostrarlos en una imagen distorsionada. Este fichero lo debemos de dejar en alguna carpeta del servidor web, por ejemplo en la carpeta de elementos de administración admin.

En alguna parte del formulario donde queremos añadir el capcha debemos de añadir lo siguiente:

capcha-formulario

El campo de entrada capcha sera el encargado de enviar el texto introducido por el usuario. La imagen del capcha es una llamada al archivo php, el archivo esta en el servidor en la direccion /admin/capcha.php, si probamos de abrir el formulario de la pagina veremos como nos va generando de manera aleatoria una secuencia de 5 letras y números:

capcha-aleatorio

Ahora solo queda comprobar en la validación del formulario que el campo introducido por el usuario equivale al generado por el archivo capcha.php, lo podemos hacer de la siguiente manera:

 if(strtoupper($_REQUEST["captcha"]) == $_SESSION["captcha"]){
   $_SESSION["captcha"] = md5(rand()*time());
	   //Capcha correcto, añadimos nuestro codigo de validacion
	 }else{
		   //Capcha incorrecto, añadimos el codigo de error
 }

 

Si el capcha ha sido correctamente introducido, añadimos el código para la validación del formulario, en caso incorrecto podemos mostrar un mensaje de aviso de capcha incorrecto.

Conclusión

Una solución muy simple pero muy efectiva para no recibir spam en los formularios web, el capcha no es muy difícil de leer y por tanto no supone un inconveniente muy importante para que el usuario termine enviando la solicitud.

Compartir dades entre 2 PLC S7 mitjançant ethernet

Una opció molt interessant quan treballem amb diversos PLC de Siemens és poder compartir dades mitjançant la xarxa ethernet del propi PLC, Siemens ens ofereix la possibilitat de crear enllaços de comunicació aprofitant la xarxa i així poder Compartir dades entre 2 PLC S7 mitjançant ethernet.

En el següent exemple s’utilitza dos PLC S7 315 2DP PN, encara que també es pot realitzar amb altres PLC de Siemens o Vipa que tinguin el port de ethernet integrat, o també una targeta de ethernet

En primer lloc tenim que crear un enllaç en el PLC mestre, aquest PLC serà l’encarregat de llegir i escriure les dades en el PLC esclau, suposem que tenim les següents adreces IP

  • IP PLC Mestre: 192.168.10.20
  • IP PLC Esclau: 192.168.10.120

Configuració de l’enllaç del PLC

Obrim el programa NetPro i seleccionem la CPU del PLC mestre:

enlace-netpro-plc

Nou enllaç amb el netpro

Seleccionem enllaç no especificat i tipus d’enllaç S7:

enlace-no-especificado

Insereix nou enllaç

En acceptar l’enllaç obrim les propietats, aquí hem d’especificar la IP del PLC client, en el nostre cas serà la 192.168.10.120, definim el ID de l’enllaç, en aquest cas la 1, aquest ID serà el que després utilitzarem en el programa de Step 7, després fem clic en direccions:

propiedades-del-enlace

Propietats del enllaç

En direccions definim el bastidor i slot, normalment 0 i 2 i en recurs d’enllaç seleccionem en local el 10 i en l’interlocutor seleccionem el 3:

detalle-direcciones-enlace-s7

Acceptem tots els canvis i transferim la nova configuració al PLC mestre.
Amb això fet ja hauríem de tenir l’enllaç entre els 2 PLC,  provem de connectar els 2 PLC en la mateixa xarxa i en obrir en línia des del Netpro veurem com l’enllaç està funcionant correctament.

Programa de lectura y escriptura de dades

En primer lloc hem de copiar els FB de comunicació en el nostre projecte de Step 7 i transferir-los al PLC, els FB de comunicació que utilitzarem són el “PUT” Write Data to a Remote CPU i el “GET” Read Data From a Remote CPU, el FB14 i el FB15 del nostre exemple.

Lectura de dades del PLC client

Mitjançant el FB de lectura “GET” realitzem una lectura seqüencial de les dades del client, en aquest cas hem posat un clock de 1 dècima de segon, però es podria augmentar el temps de cicle depenent de la quantitat de dades a llegir:

lectura-datos-get

En aquest exemple es llegeixen les dades del DB300 a partir de la posició 200 amb una quantitat de 150 bytes, i es transfereixen al plc del mestre també al DB300 a partir de la posició 200. Es pot veure com el ID de l’enllaç és el 1 que anteriorment hem definit en la configuració de maquinari

Escriptura de dades del PLC client

Mitjançant el FB d’escriptura “PUT” realitzem una escriptura seqüencial de les dades del client, en aquest cas hem posat un clock de 1 dècima de segon, però es podria augmentar el temps de cicle depenent de la quantitat de dades a escriure:

escritura-datos-put

En aquest exemple s’escriuen les dades del DB300 a partir de la posició 0 amb una quantitat de 150 bytes, aquestes dades es transfereixen al PLC client també al DB300 a partir de la posició 0. Es pot veure com el ID de l’enllaç és l’1 que anteriorment hem definit en la configuració de maquinari