Ver Mensaje Individual
  #5 (permalink)  
Antiguo 06/07/2006, 02:03
pepe79
 
Fecha de Ingreso: junio-2006
Mensajes: 14
Antigüedad: 17 años, 10 meses
Puntos: 0
Mensaje Código solución que falla

Hola otra vez.

Tras echarle un vistazo al tutorial que proponías y combinando código de otra función que ya hacía una limpieza de emails, cree la siguiente función:


// $tabla es la tabla usuario, altas, concursante...
// $campo es el campo del email (email, Email, direccion...)
// $clave es el nombre del campo a buscar para borrar (normalmente un codigo, o el propio email...)
function limpiar($tabla, $campo, $clave)
{
// expresion que verifica que el correo sea del tipo [email protected]
$expresion = "/^( [a-zA-Z0-9] )+( [a-zA-Z0-9\._-] )*@( [a-zA-Z0-9_-] )+( [a-zA-Z0-9\._-] +)+$/";

$consulta = "SELECT * FROM ".$tabla.";";
$resultado = mysql_query($consulta) or die (mysql_error());

// Funciona si el campo clave es numérico o alfanumérico (lo intenta de las dos formas y continua)

$borradoALFA ="DELETE FROM ".$tabla." WHERE ".$clave." LIKE '".$fila[$clave]."';";
$borradoNUME ="DELETE FROM ".$tabla." WHERE ".$clave." = ".$fila[$clave].";";


while ($fila = mysql_fetch_array($resultado, MYSQL_ASSOC))
{ // si no tiene el formato correcto, lo borra:
if(!preg_match($expresion, $email)) mysql_query($borradoALFA) or mysql_query($borradoNUME) or die(mysql_error());
else
{ // Si tiene la sintaxis [email protected] comprueba:
$email = $fila[$campo]; // captura el email
list($username,$domain)=split('@',$email); // separa el usuario y el dominio
// si el dominio no es de correo, lo borra:
if (!checkdnsrr($dominio,MX)) mysql_query($borradoALFA) or mysql_query($borradoNUME) or die(mysql_error());
else // si es todo correcto, comprueba que la dirección existe y el servidor está disponible.
if(!fsockopen($domain,25,$errno,$errstr,30)) mysql_query($borradoALFA) or mysql_query($borradoNUME) or die(mysql_error());
}
}
}


Lo que pasa es que no funciona y no encuentro el fallo.
¿Alguien lo ve?

Gracias de nuevo.