clase Validador de emails

Una pequeña clase para validar emails hecha en PHP:

ValidadorEmail.php

PHP:
  1. <?php
  2. class ValidadorEmail
  3. {
  4.     /**
  5.       * variables miembro Públicas
  6.       */
  7.     var $email; // dirección de email a comprobar (String)
  8.  
  9.  
  10.     /**
  11.       * variables miembro Privadas
  12.       */
  13.     var $exp_reg; // expresión regular (String)
  14.  
  15.  
  16.  
  17.     /**
  18.       * método públco comprobarEmail
  19.       *  @parametros  Ninguno
  20.       *  @devuelve    (Boolean)
  21.       */
  22.  
  23.     function comprobarEmail ()
  24.     {
  25.         $this->exp_reg"^[[:alnum:]_-]+"; // equivale a "^[a-z0-9_-]+"
  26.         $this->exp_reg .= "(\.[[:alnum:]_-]+){0,}"; // equivale a "(\.[a-z0-9_-]+){0,}"
  27.         $this->exp_reg .= "@";
  28.         $this->exp_reg .= "[[:alnum:]_-]+"; // equivale a "[a-z0-9_-]+"
  29.         $this->exp_reg .= "(\.[[:alnum:]_-]+){0,}"; // equivale a "(\.[a-z0-9_-]+){0,}"
  30.         $this->exp_reg .= "(\.[[:alpha:]]{2,3})$"; // equivale a "(\.[a-z]{2,3})$"
  31.  
  32.         if ( ereg ( $this->exp_reg , $this->email ) )
  33.         {
  34.             return (true);
  35.         }
  36.         else
  37.         {
  38.             return (false);
  39.         }
  40.  
  41.     }
  42. }
  43. ?>

Y un ejemplo de utilización:

comprobar_emails.php

PHP:
  1. <?php
  2. // incluimos la clase
  3. include ( "ValidadorEmail.php" );
  4.  
  5. // creamos un array con varios emails válidos y no válidos para el ejemplo
  6. $emails = array(
  7.                 "joan@joan.net",
  8.                 "joan.joan@joan.org",
  9.                 "joan@joan.co.ar",
  10.                 "joan@joan.joan.joan.co.ar",
  11.                 "joan@joan.joan.co.ar.re.ro",
  12.                 "joan@joan.joan.com.ba.re.rom",
  13.                 "joan@joan.joan.co.rem.roma",
  14.                 "joan.@.joan.com",
  15.                 "@joan@joan.com",
  16.                 "joan.com",
  17.                 "joan@joancom",
  18.                 "joan@joan.",
  19.                 "joañ@joan.com",
  20.                 "joaç@joan.com",
  21.                 "@joan.com",
  22.                 "joan.joan@.com",
  23.                 " joan@ joan.com",
  24.                 "joan@ joan.com",
  25.                 ".joan@joan.com",
  26.                 "joan@joan,com"
  27.                 );
  28.  
  29. // instanciamos la clase
  30. $validar = new ValidadorEmail ();
  31.  
  32. // iteramos el array de emails para comprobar su validez
  33. for ( $i=0 ; $i<sizeof($emails) ; ++$i )
  34. {
  35.     // asignamos el email a comprobar
  36.     $validar->email = $emails[$i];
  37.     // comprobamos su validez mediante el método de comprobación
  38.     $retorno = $validar->comprobarEmail ();
  39.  
  40.     if ( $retorno == false )
  41.     {
  42.         echo "<b><font type='Courier' color='red'>Email erróneo>> " . $emails[$i] . "</font></b><br />";
  43.     }
  44.     else
  45.     {
  46.         echo "<b><font type='Courier' color='green'>Email correcto>> " . $emails[$i] . "</font><b><br />";
  47.     }
  48.  
  49. }
  50. ?>

Lo cual devloverá:

Email correcto >> joan@joan.net
Email correcto >> joan.joan@joan.org
Email correcto >> joan@joan.co.ar
Email correcto >> joan@joan.joan.joan.co.ar
Email correcto >> joan@joan.joan.co.ar.re.ro
Email correcto >> joan@joan.joan.com.ba.re.rom
Email erróneo >> joan@joan.joan.co.rem.roma
Email erróneo >> joan.@.joan.com
Email erróneo >> @joan@joan.com
Email erróneo >> joan.com
Email erróneo >> joan@joancom
Email erróneo >> joan@joan.
Email erróneo >> joañ@joan.com
Email erróneo >> joaç@joan.com
Email erróneo >> @joan.com
Email erróneo >> joan.joan@.com
Email erróneo >> joan@ joan.com
Email erróneo >> joan@ joan.com
Email erróneo >> .joan@joan.com
Email erróneo >> joan@joan,com

Referencias de interés:
* Tutorial de expresiones regulares en BULMA

Comando :: TextFields en posiciones exactas

Un nuevo comando que abre un panel XUI con el que se pueden colocar campos de texto en posiciones exactas para evitar el aliasing.
El comando abre un panel en el cual hay varias opciones:

Panel XUI del comando Txt posiciones exactas
Panel TextFields en posiciones exactas

Opciones:

* Todos los layers --> Indica que se procederá a recolcar todos los campos de texto de todos los layers en el número de frame seleccionado en posiciones exactas.

* Solo layer seleccionado --> Indica que se procederá a recolcar todos los campos de texto del layer seleccionado en el número de frame seleccionado en posiciones exactas.

* Solo TextFields seleccionados --> Indica que se procederá a recolcar todos los campos de texto contenidos en la selección en posiciones exactas.

* Rango de frames --> Indica que se procederá a recolcar todos los campos de texto de todos los layers dentro del rango de frames especificados desde el frame "desde frame" hasta el "hasta frame:"

Referencias de interés:
* Javascript Flash XML2UI 

Librería GameSWF :: creación de UIs en Flash para juegos C++

GameSWF es una API que permite a programadores de C++ poder aventajarse de la facilidad con la que se crean gráficos con Flash.
El rendimiento de la aplicación resultante es mucho mejor que la del Flash player pq utiliza hardware 3D.

En la versión actual se pueden cargar archivos .swf hechos en Flash que contengan botones, formas (shapes), texto, texto dinámico, rellenos de bitmap, degradados radiales y lineales, botones y algunas cosas más.
Por lo que he leído tiene soporte para ActionScript, pero bastante flojo.Es decir, puedes utilizar algunas funiones ActionScript desde C++ pero no todas. Luego, me ha parecido entender que tbién puede haber comunicación AS --> C++ a través de fscommand(), lo cual le da más versatilidad a la cosa.
Un ejemplo de un juego hecho con GameSWF es zblocks

Enlace al sitio de la librería:
* GameSWF

Ideas para el nuevo SEPY

Sephiroth, el creador de SEPY; editor de ActionScript y PHP que uso hace tiempo y sin el cual no sé qué haría; ha anunciado en su blog que tiene pensado rehacer la aplicación desde cero.
La causa de la decision ha sido el hecho que cuando empezó a desarrollar SEPY no lo hizo tan óptimamente como ahora sería capaz de hacerlo.
Segun dice, la manera de la que está hecho SEPY no le permitiría implementar nuevas funionalidades que le tiene preparadas.
Así pues, si alguien es usuario de este editor y le hecha algo en falta que no dude en comunicárselo.

Enlace al post:
* Ideas for SEPY 2.0?
Referencias de interés:
* SEPY - ActionScript editor
* Sephiroth di Crugnola - free Flash PHP files

Update de los paneles “snippetsEasy” y “JSFL_scriptsEasy”

He encontrado un bug en los archivos "snippetsEasy" y "JSFL_scriptsEasy".
El error era que cada vez que se actualizaba el listado, había un listener que iba sumandose a sí mismo, con lo que a lo largo de las actualizaciones, los comandos o snippets a ejecutar lo hacía tantas veces como clicks habíamos hecho al botón reload.

Las respectivas actualizaciones están en sus posts originales:
- Panel snippets v.2
- Panel para ejecutar, editar y crear scripts JSFL v.2

FAQ de XML imprescindible

Dejo un enlace muy bueno a un FAQ de XML tratado desde Flash.
Me ha sacado de algún apuro cuando ya no sabía donde buscar :)

Enlace al FAQ:
* Flash XML FAQ

Lipsync :: movimiento de labios en animaciones Flash

Curiosa aplicación que permite, a partir de una grabación de una conversación, determinar el movimiento de labios de una animación.
El programilla tiene soporte para español, inglés, francés, japonés entre otros, y te permite exportar en formato .swf
No sé que pasa con Flash, pero le salen novias por todas partes XD

Enlace a a página de la aplicación:
* Lipsync

Indexar contenidos flash dinámicos en buscadores

Encontré este artículo de Carlos Rovira en el que apunta a un par de recursos muy interesantes acerca de como indexar los contenidos de aplicaciones Flash dinámicas (que cargan de fuentes externas).

La metodología es bastante simple... Se trata de detectar el tipo de agente que está visitando la página, un "robot" o un navegador. Si es un "robot" le mostramos la página HTML, si es un navegador, la página Flash :)

Hay un problema de todos modos... Resulta que en otro artículo se apunta a que esta técnica (cloaking) puede ser vista por Google como la de un posible malechor intentando ganar posiciones en el ránking...

Enlace al artículo:
* Flash y los motores de busqueda
* Optimizing Flash for Search Engines
* Optimizing Flash for Search Engines update

Más Flash player 8

Mike Downey explica en un artículo los temas clave del Flash player 8:

Mejora del rendimiento:
- Se convierten los vectores a bitmaps en tiempo de ejecución, lo cual implica menos proceso a la hora de mover movieclips.
- Mejora del rendimiento de ActionScript

Novedades:
- Nueva API de filtros que permite controlar varios efectos como sombras, contornos, brillo, difuminado, etc... en tiempo de ejecución.
- Nuevo y mejorado motor de renderizado de textos.

Vídeo
- Nuevo codec para vídeo que ofrece más calidad sin incrementar el tamaño del archivo.
- Canal alpha para vídeo. Total integración de vídeo e interfaz.

Más por venir...
- En los próximos meses van a ir saliendo nuevas características del Flash player 8, así que a medida que las vaya conociendo las iré comentando.

Enlaces a vídeos:
* MAX2004 - Day 1 - Maelstrom demos
* Vídeo de Josh Dura

Enlace a la fuente:
* Mike Downey - Flash team

Hay contenido pirateado en toda copia de Window XP

Me acabo de topar con un artículo en el que explican una cosa curiosa acerca del sistema operativo Windows XP. Es un cosa que cualquier persona que lo posea puede comprobar por si misma.
Si vamos a la carpeta C:\WINDOWS\Help\Tours\WindowsMediaPlayer\Audio\Wav encontraremos 9 archivos .wav ( de wmpaud1.wav a wmpaud9.wav ) que si son abiertos con cualquier editor de textos, veremos un pequeño texto al final que no es más que la firma de un crackeador.
Eso significa que para crear esos archivos se utilizó un software pirateado.
En el artículo original más detalles:

Fuente:
* Tom's hardware

Next Page →