Monthly Archives: Agost 2014

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.

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