Modulo contact D6 - Valida anche e-mail incomplete

5 contenuti / 0 new
Ultimo contenuto
Modulo contact D6 - Valida anche e-mail incomplete

Se nel campo e-mail inserite una e-mail incompleta, senza estensione del dominio, tipo nome@tiscali , il form accetta la mailbox.
C'è un modo per specificare che ci deve essere anche un "." dopo la "@"?

Ho visto che anche su Drupal.org, se provate la registrazione con una e-mail di quel tipo viene accettata.

Ho provato ad installare http://drupal.org/project/email_verify ma la situazione non cambia.

Fantastico!!! (in senso ironico naturalmente)

Cambiamo immediatamente l' hook_validate del modulo contact!

<?php
/**
 * Validate the site-wide contact page form submission.
 */
function contact_mail_page_validate($form, &$form_state) {
global
$user;
  if (!
$form_state['values']['cid']) {
   
form_set_error('cid', t('You must select a valid category.'));
  }
 
$email = $form_state['values']['mail'];
 
$regexp="/^[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+)*)+\\.[a-z]{2,6}$/i";
  if ( !
preg_match($regexp, $email) ) {
   
form_set_error('mail', t('You must enter a valid e-mail address.'));
  }
  list(
$username, $domain) = split('@',$email);
  if (!
checkdnsrr($domain,'MX')) {
     
form_set_error('mail', t('You must enter a valid e-mail domain address'));
  }
  if (
$user->uid==1) {
    if (!
valid_email_address($form_state['values']['destinatariomail'])) {
     
form_set_error('destinatariomail', t('Enter a valid e-mail address destinatario-mail.'));
    }
  }
}
?>

Ma questo vale per tutti allora? aiuto XD

Sfruttando il codice di danzisiweb ho scritto un modulo "mailvalidator" con questo codice, però a me salta sempre questo controllo.

mailvalidator.module (da inserire in una cartella mailvalidator e uploadare in sites/all/modules/custom, ovviamente c'è da mettere anche il file mailvalidator.info)

<?php
/**
* @file
* Valida il campo e-mail con il dominio.
*
* Valida anche il TLD del dominio e non solo
* la presenza della @
*/
function mailvalidator_mail_page_validate($form, &$form_state) {
global $user;
  if (!$form_state['values']['cid']) {
    form_set_error('cid', t('You must select a valid category.'));
  }
  $email = $form_state['values']['mail'];
  $regexp="/^[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+)*)+\\.[a-z]{2,6}$/i";
  if ( !preg_match($regexp, $email) ) {
    form_set_error('mail', t('You must enter a valid e-mail address.'));
  }
  list($username, $domain) = split('@',$email);
  if (!checkdnsrr($domain,'MX')) {
      form_set_error('mail', t('You must enter a valid e-mail domain address'));
  }
  if ($user->uid==1) {
    if (!valid_email_address($form_state['values']['destinatariomail'])) {
      form_set_error('destinatariomail', t('Enter a valid e-mail address destinatario-mail.'));
    }
  }
}