Bonjour à toutes et à tous !
Le problème que j’essaye de résoudre est le suivant :
Sur la page d’inscription, j’aimerais restreindre le domaine de l’adresse e-mail entre quelques choix possibles seulement (afin de limiter l’usage du site à un usage interne à l’entreprise), à travers une liste de choix.
L’utilisateur, lors de son inscription, n’aurait donc qu’à entre les caractères figurant avant l’arobase.
La valeur finale de l’email enregistré par drupal doit donc être celle comme ceci :
[user_entry]+[@]+[domaine_choisi]
Je suppose qu’il faut modifier le template page-user-register.tpl.php et le mettre dans mon dossier de thème. Mais je ne vois pas comment retourner la bonne variable pour l’enregistrement du bon e-mail… :(
-> Prenons un exemple :
Disons que je restreint aux e-mails de la forme xxx@dede.fr et xxx@dede.net .
Lors de son inscription, l’utilisateur ne voit pas un champ e-mail classique (champ texte avec détection de structure), mais plutôt :
[champ texte court]@[choix entre >dede.fr >dede.net]
Si son adresse est pierre@dede.fr, il tape pierre et choisis dede.fr.
Si son adresse est pierre@interdit.fr, il ne peut pas s’inscrire sur le site.
Et l’e-mail d’inscription serait évidement envoyé à l’adresse rentrée.
Voyez-vous comment procéder ??
Merci d’avance à ceux qui m’aideront ! :)
- Vous devez vous identifier ou créer un compte pour écrire des commentaires

Je viens de trouver cette fonction sur drupal.org :
function email_validate($email) {$isValid = true;
$atIndex = strrpos($email, "@");
if(is_bool($atIndex) && !$atIndex) {
$isValid = false;
}
else {
$domain = substr($email, $atIndex+1);
$local = substr($email, 0, $atIndex);
$localLen = strlen($local);
$domainLen = strlen($domain);
if($localLen < 1 || $localLen > 64) {
// local part length exceeded
$isValid = false;
} else if($domainLen < 1 || $domainLen > 255) {
// domain part length exceeded
$isValid = false;
} else if($local[0] == '.' || $local[$localLen-1] == '.') {
// local part starts or ends with '.'
$isValid = false;
} else if(preg_match('/\.\./', $local)) {
// local part has two consecutive dots
$isValid = false;
} else if (!preg_match('/^[A-Za-z0-9\-\.]+$/', $domain)) {
// character not valid in domain part
$isValid = false;
} else if(preg_match('/\.\./', $domain)) {
// domain part has two consecutive dots
$isValid = false;
} else if(!preg_match('/^(\\.|[A-Za-z0-9!#%&`_=\/$\'*+?^{}|~.-])+$/', str_replace("\\","",$local))) {
// character not valid in local part unless
// local part is quoted
if (!preg_match('/^"(\\"|[^"])+"$/', str_replace("\\","",$local))) {
$isValid = false;
}
}
if($isValid && !(checkdnsrr($domain,"MX") || checkdnsrr($domain,"A"))) {
// domain not found in DNS
$isValid = false;
}
}
return $isValid;
}
Ca peut être une solution. Mais je tiens vraiment à ce que l’utilisateur doive choisir le domaine parmi ceux proposés. Afin de bien montrer que l’utilisation est restreinte aux e-mails internes à l’entreprise. (De plus, je ne comprends pas toute la fonction… Surtout la fin. :3).
Source : http://drupal.org/node/755894
www.nyoz.fr
nyoz
7
(UP) Please help ! :/
www.nyoz.fr
nyoz
7