Chequear el dominio del correo a través del DNS

22 de Dic, 2015

Realizamos un chequeo de la estructura del correo electronico y del dominio via PHP.

Hacemos un llamado AJAX desde el formulario al chequeador en PHP

  1. jQuery(document).ready(function($) {
  2.  
  3. $('input[name="item_meta[17]"]').change(function() {
  4. //Conseguimos los valores de E-mail y la web URL
  5. var email = $('input[name="item_meta[17]"]').val();
  6. var web_url = location.href;
  7.  
  8. //data a ser enviada al ajax
  9. post_data = {'mail':email};
  10.  
  11. //Ajax post data al servidor
  12. $.post('dominio/chequeador.php', post_data, function(response){
  13.  
  14. //carga del json el mensaje
  15. if(response.type == 'error')
  16. {
  17. $('input[name="item_meta[17]"]').css('background-color','pink'); // Pinta el fondo de rosa si esta malo
  18. $('input[type="submit"]').attr("disabled", "disabled"); // Desabilita boton de envio si esta malo
  19. }else{
  20. $('input[name="item_meta[17]"]').css('background-color','LightGreen'); //Pinta el fondo de verde si esta bueno
  21. $('input[type="submit"]').removeAttr("disabled"); //Habilita boton de envio si esta bueno
  22. }
  23. }, 'json');
  24. });
  25.  
  26. });

Ahora el chequeador en PHP

  1. // Chequeamos si es AJAX
  2. if(!isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') {
  3.  
  4. //exit script outputting json data
  5. $output = json_encode(
  6. array(
  7. 'type'=>'error',
  8. 'text' => 'Request must come from Ajax'
  9. ));
  10.  
  11. die($output);
  12. }
  13. //Obtenemos el correo
  14. $mail= $_REQUEST['mail'];
  15. $domain = explode('@', $mail);
  16. $regex = '/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/';
  17. //Chequeamos el dominio
  18. if (!checkdnsrr($domain[1]) OR !preg_match($regex, $mail)) {
  19. $output = json_encode(array('type'=>'error', 'text' => 'Dominio No Valido'));
  20. die($output);
  21. } else {
  22. $output = json_encode(array('type'=>'message', 'text' => 'Dominio Valido'));
  23. die($output);
  24. }