Ver Mensaje Individual
  #2 (permalink)  
Antiguo 12/05/2003, 12:49
Cocker
 
Fecha de Ingreso: noviembre-2002
Ubicación: Barcelona - España
Mensajes: 270
Antigüedad: 21 años, 5 meses
Puntos: 0
Aqui tienes un script para validar la dirección de correo

Código PHP:
<HTML>
<HEAD>
   <TITLE>Validación de direcciones de correo</TITLE>
</HEAD>
<BODY>
<CENTER>
<H1>VALIDACIÓN DE DIRECCIONES DE CORREO</H1>
<FORM ACTION="valida_correo.php" METHOD="POST">
<?php
   
echo '<P><INPUT TYPE="TEXT" NAME="cadena" VALUE="',
        
$cadena'" SIZE=50>';
?>
   <P><INPUT TYPE="SUBMIT" VALUE="VALIDAR">
      <INPUT TYPE="RESET" VALUE="LIMPIAR">
</FORM>
<?php
// Función que comprueba que no haya dos puntos seguidos
function comprobar_puntos($cadena)
   {
   
$seguir true;
   
// Se obtiene la posición del primer punto
   
$posicion strpos($cadena'.');
   
// Se comprueba que exista
   
while (($posicion) && ($seguir))
      {
      
// Se comprueba que el anterior y el siguiente no son . o @
      
if (($cadena[$posicion 1] != '.') &&
          (
$cadena[$posicion 1] != '.') &&
          (
$cadena[$posicion 1] != '@') &&
          (
$cadena[$posicion 1] != '@'))
          
// Se obtiene la subcadena a partir del punto
          
$cadena substr($cadena$posicion 1);
      else
          
$seguir false;
      
// Se vuelve a obtener la posición del primer punto
      
$posicion strpos($cadena'.');
      }
   return 
$seguir;
   }

function 
validar_correo ($cadena)
   {
   
// Primero se comprueba que sólo aparezca una arroba
   // y que al menos exista un punto decimal. Para lo que
   // se calcula la frecuencia de los caracteres
   
$caracteres count_chars($cadena);
   if ((
$caracteres[ord('@')] == 1) && ($caracteres[ord('.')]>0))
      {
      
// Se comprueba que sólo existan caracteres alfabéticos
      
$caracteres count_chars($cadena3);
      
$i 0;
      
$seguir true;
      while ((
$i strlen($cadena)) && $seguir)
         {
         
$posicion ord($cadena[$i]);
         if (
$posicion ord('0'))
            {
            
// El código del carácter no es numérico
            
if ($posicion != ord('.'))  // y no es el punto
                
$seguir false;
            }
         elseif ((
$posicion ord('9')) && ($posicion ord('@')))
            
$seguir false;  // Entre números y letras mayúsculas
         
elseif (($posicion ord('Z')) && ($posicion ord('a')))
            
$seguir false;  // Entre mayúsculas y minúsculas
         
elseif ($posicion ord('z'))
            
$seguir false;  // mayor que letras minúsculas
         
$i++;
         }
      if (
$seguir// Si de momento es correcto
         
{
         
// comprobar que detrás de @ hay caracteres
         //  y al menos un punto
         
$posicion1 strpos($cadena'@');
         
$posicion2 strrpos($cadena'.');
         
$seguir = (($posicion1 <= $posicion2) &&
                    (
$posicion2 < (strlen($cadena) - 1)) &&
                    (
$posicion1 <> 0));
         if (
$seguir)
            
$seguir comprobar_puntos($cadena);
         }

      return 
$seguir;
      }
   else
      {
      
// No tiene una arroba, ni un punto.
      
return  false;
      }
   }

   
// Determina si hay o no cadena de caracteres
   
if (!empty($cadena))
      if (
validar_correo($cadena))
         echo 
"'$cadena' es una dirección de correo válida<BR>";
      else
         echo 
"'$cadena' no es una dirección de correo válida<BR>";
?>
</CENTER>
</BODY>
</HTML>