
06/07/2006, 02:03
|
| | Fecha de Ingreso: junio-2006
Mensajes: 14
Antigüedad: 18 años, 8 meses Puntos: 0 | |
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. |