web-dev-qa-db-ja.com

Gmailを使用して登録するときにユーザーのメールアドレスを検証する

私は最近、Gmailアカウントを使用するときに、@の前と名前の後の部分に何かを追加しても、1つのEメールアドレスしか使用できないことを知りました。例です。 myusername(at)gmail dot com myusername + anythingelse(at)gmail dot com 1つのgmailアカウントに送信される両方のアドレスからの電子メールになります。

残念ながら、WP関数 "email_exists()"を使用して、電子メール "myusername + anythingelse"が存在するかどうかをチェックすると、WP正しくないと言っています。

その結果、MAIN gmailアカウントはまだ登録されていないことを確認する必要があります。さらに、登録されていない場合は、拡張メールアドレスでユーザーに登録させます。

どのようにそのgmailアカウントであるかどうかをチェックする方法に関して誰かに助けを与え、そして必要ならば+の後の部分を取り除きますので、私はMAINアカウントの電子メールがユーザーに登録されているかどうかチェックします。

これは現在私が電子メールアドレスを確認する方法です:

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

私はちょっとこのビットで援助を必要とします:

        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

うーん、助けを求める前に一生懸命に試みるべきです:)

結局のところ非常に単純でした(正しいか間違っている)。

    $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