Como hacer un formulario de contacto con PHP (III)



Como hacer un formulario de contacto con PHP (III)

Ya vimos la validación por JavaScript, que aunque es superficial puede ayudarnos a optimizar tiempo y recursos.

Ahora veremos como validar el formulario de forma interna y privada para hacer un poco más seguro nuestro código.

Validación por PHP

Cuando el usuario envía el formulario, JavaScript valida si los datos son correctos y si es así se envía la información, esa información se envía al archivo “resibe-datos.php” que especificamos en el parámetro “action” de la etiqueta <form>.

Entonces debemos crear un archivo con ese nombre (“resibe-datos.php”) en el mismo directorio que la pagina del formulario, es en este archivo donde escribiremos nuestro código PHP que trabajara los datos.

El código PHP

Lo que deberá hacer nuestro código es:

  1. Ver si se han recibiendo los datos del formulario.
  2. Validar los datos.
  3. Si los datos son validos, enviarlos, o de lo contrario informar que hay un error.

Por lo tanto el código base queda así:

PHP:
  1. <!--p<br--> $valido = true;
  2.  
  3. if( isset($_POST['nombre']) and isset($_POST['email']) and isset($_POST['comentario']) ){
  4.  
  5. // validar los datos
  6.  
  7. }else{
  8.  
  9. $valido = false;
  10.  
  11. }
  12.  
  13. if($valido){
  14.  
  15. // enviar el formulario
  16.  
  17. }else{
  18.  
  19. <h3>Sus datos contienen errores.</h3>
  20. ";
  21.  
  22. }
  23.  
  24. ?&gt;

La función “isset()” devuelve un “true” si la variable se le envía existe, o en caso contrario devuelve un “false”, por lo tanto lo que estamos haciendo con la línea:

PHP:
  1. if( isset($_POST['email']) and isset($_POST['email']) and isset($_POST['comentario']) )

Es preguntar si todos los campos necesarios han sido enviados, o de lo contrario la salida será un “false”.

Al igual que en JavaScript los datos deben cumplir con ciertas características para pasar la validación, para recordarlas, estas son:

  1. Nombre:

    Es necesario, por lo tanto en el campo debe existir texto.

  2. E-mail:

    Es necesario, por lo tanto en el campo debe existir texto y además debe cumplir con un formato, por ejemplo si el campo tuviese “diego[arroba]soma-d.com” no seria valido, en cambio “diego@soma-d.com” si.

  3. Comentario:

    Es necesario, por lo tanto en el campo debe existir texto.

Para lograr esto el código quedará así:

PHP:
  1. <!--p<br--> $valido = true;
  2.  
  3. if( isset($_POST['nombre']) and isset($_POST['email']) and isset($_POST['comentario']) ){
  4.  
  5. if($_POST['nombre']==''){
  6.  
  7. $valido = false;
  8.  
  9. }
  10.  
  11. if($_POST['email']==''){
  12.  
  13. $valido = false;
  14.  
  15. }
  16.  
  17. if($_POST['comentario']==''){
  18.  
  19. $valido = false;
  20.  
  21. }
  22.  
  23. }else{
  24.  
  25. $valido = false;
  26.  
  27. }
  28.  
  29. if($valido){
  30.  
  31. // enviar el formulario
  32.  
  33. }else{
  34.  
  35. <h3>Sus datos contienen errores.</h3>
  36. ";
  37.  
  38. }
  39.  
  40. ?&gt;

Con la linea:

PHP:
  1. if($_POST['nombre']=='')

Lo que estamos preguntando es si la variable del nombre es igual a vacío, y si es correcto se regresará un “false”, se hará lo mismo para todas las entradas necesarias.

Pero (al igual que en JavaScript)

¿Qué pasa si el mail es invalido?

Para solucionar este inconveniente la forma más es eficiente son las “expresiones regulares”.

El código pasaría a quedar así:

PHP:
  1. <!--p<br--> $valido = true;
  2.  
  3. if( isset($_POST['nombre']) and isset($_POST['email']) and isset($_POST['comentario']) ){
  4.  
  5. if($_POST['nombre']==''){
  6.  
  7. $valido = false;
  8.  
  9. }
  10.  
  11. if (!ereg("^([a-zA-Z0-9\._]+)\@([a-zA-Z0-9\.-]+)\.([a-zA-Z]{2,4})",$_POST['email'])){
  12.  
  13. $valido = false;
  14.  
  15. }
  16.  
  17. if($_POST['comentario']==''){
  18.  
  19. $valido = false;
  20.  
  21. }
  22.  
  23. }else{
  24.  
  25. $valido = false;
  26.  
  27. }
  28.  
  29. if($valido){
  30.  
  31. // enviar el formulario
  32.  
  33. }else{
  34.  
  35. <h3>Sus datos contienen errores.</h3>
  36. ";
  37.  
  38. }
  39.  
  40. ?&gt;

Con la expresión regular "^([a-zA-Z0-9\._]+)\@([a-zA-Z0-9\.-]+)\.([a-zA-Z]{2,4})" revisamos si el patrón del e-mail coincide, y de lo contrario se devolverá un “false”.

La instrucción:

PHP:
  1. if($_POST['nombre']=='')

se omite, porque un campo vacío tampoco cumplirá con el patrón.

Y la ultima instrucción:

PHP:
  1. if($valido)

pregunta si valido es “true”, de ser correcto se ejecutaran las instrucciones para enviar el mail, y de lo contrario se enviara un mensaje de error al usuario.

Con esto la validación por PHP está completa, solo falta aprender como enviar la información por mail desde nuestra página.

Sphere: Related Content

One Response. Leave Yours?

  1. Gravatar
    julio galindo //

    muy buen aporte muchacho,

Leave a Reply