--More--
Alt-Ctrl- SCR LOCK

ctrl-zetta

function validMail.php

2007-10-08 18:08:21 by zetta in Php (1 comment) permalink

Muchas veces tengo que comprobar si un correo que escriben en algun formulario es un correo válido, algunas otras veces esto se complica pues algunas expresiones regulares pueden ser fácilmente engañadas con un a@a.a, con esta función podemos verificar mas a fondo si este es un correo real.

  1. /*
  2. validMail():Boolean
  3. @email -> string: email a comparar
  4. @validate -> Boolean: conectarse al servidor a buscar dicho usuario
  5. */
  6. function validMail($email,$validate = false) {
  7. if (!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email))
  8. return false;
  9. if ($validate){
  10. list ( $Username, $Domain ) = split ("@",$email);
  11. if (getmxrr($Domain, $MXHost))
  12. $ConnectAddress = $MXHost[0];
  13. else
  14. $ConnectAddress = $Domain;
  15. $Connect = fsockopen( $ConnectAddress, 25 );
  16. if ($Connect) {
  17. if (ereg("^220", $Out = fgets($Connect, 1024))) {
  18. fputs ($Connect, "HELO $HTTP_HOST\r\n");
  19. $Out = fgets ( $Connect, 1024 );
  20. fputs ($Connect, "MAIL FROM: <{$email}>\r\n");
  21. $From = fgets ( $Connect, 1024 );
  22. fputs ($Connect, "RCPT TO: <{$email}>\r\n");
  23. $To = fgets ($Connect, 1024);
  24. fputs ($Connect, "QUIT\r\n");
  25. fclose($Connect);
  26. if (!ereg ("^250", $From) || !ereg ( "^250", $To )) {
  27. return false;
  28. }
  29. }else{
  30. return false;
  31. }
  32. }else{
  33. return false;
  34. }
  35. }
  36. return true;
  37. }
  38.  
  39. ?>

Tags: , , , , ,
del.icio.us digg reddit
CLI2 Theme by Rod McFarland.