我最近才发现,使用gmail帐户时,你可以在@之前和名称之后添加任何内容,但仍然只能使用一个电子邮件地址。实例myusername(at)gmail dot commyusername+anythingelse(at)gmail dot Com会将来自两个地址的电子邮件发送到一个gmail帐户。
不幸的是,当使用WP函数“email\\u exists()”检查电子邮件“myusername+anythingelse”是否存在时,WP我认为正确地说它不存在
因此,我需要验证主gmail帐户是否尚未注册,如果尚未注册,请让用户使用扩展的电子邮件地址注册。
任何人都可以提供一些帮助,以检查它是否是gmail帐户,然后如果有必要,去掉+后的部分,因此我检查主帐户电子邮件是否注册给用户。
这是我目前验证电子邮件地址的方式:
$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
最合适的回答,由SO网友: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