web-dev-qa-db-fra.com

Valider l'adresse e-mail d'un utilisateur lors de l'utilisation de gmail pour s'enregistrer

Ce n'est que récemment que j'ai découvert que, lorsque vous utilisez un compte Gmail, vous pouvez ajouter n'importe quoi à la partie avant le @ et après le nom et n'utiliser que l'adresse électronique. Exemple. myusername (at) gmail point com myusername + noel (at) gmail point com Les e-mails des deux adresses seront envoyés à un compte gmail.

Malheureusement, lorsqu’il vérifie si le courrier électronique "nomutilisateur + tout ce qui existe" existe à l’aide de WP fonction "email_exists ()", WP, je pense qu’il est juste de dire qu’il ne le fait pas.

Par conséquent, je dois valider que le compte MAIN gmail n’a pas déjà été enregistré, et s’il n’est pas enregistré, laissez-le s’inscrire avec l’adresse e-mail étendue.

Quiconque donne de l’aide sur la manière de vérifier s’il s’agit d’un compte Gmail et, si nécessaire, supprime la partie après +, afin que je vérifie si l’e-mail du compte PRINCIPAL est enregistré pour un utilisateur.

Voici comment je vérifie les adresses électroniques:

$validemail = is_email($email_to_check);
    if ($validemail):
        $exists = email_exists($email_to_check);
        if ($exists):
          Move on and verify

J'ai en quelque sorte besoin d'aide avec ce bit:

        elseif:
       is it a gmail account?
          if so, is it using a pseudonym +
             if so, split this , join the myusername and gmail dot com
                then recheck using email_exists()
                   if now it exists as true
                     return with warning, this email account is registered
                       else register email to user
2
Malisa

Hmm, devrait essayer plus fort avant de demander de l'aide :)

Était assez simple à la fin (juste ou faux) cela fonctionne:

    $domain_array = array('googlemail.com','gmail.com');
    $validemail = is_email($email_to_check);
    $exists_text = '';
    if ($validemail):
        $exists = email_exists($email_to_check);
        list($user, $domain) = explode('@', $email_to_check);
        if (!$exists):
            if (strpos($user, '+')) {
                list($username_email, $crap) = explode('+', $user);
                $exists = email_exists($username_email . '@' . $domain);
                $exists_text = __('User account exists with this email address', 'pw_texts');
                $email_to_check = strtolower($username_email . '@' . $domain);// Gmail only recognizes lowercase
            }

        endif;
        if ($exists):
           carry on as before
2
Malisa