2017-08-01 112 views
0

我需要帮助修改以下代码。我在我的Wordpress网站上使用了Ultimate Member插件来获得成员资格。我只希望我组织内的人员能够注册该网站(我的部门使用不同的域名来填写他们的电子邮件地址,这很令人头疼,我不想进入该网站)。现在,它会自动验证来自@ company1.com的电子邮件,但我需要为该代码添加多达10个电子邮件地址才能执行自动验证。基本上,任何没有列出电子邮件地址的人都会自动被拒绝加入该网站。使用Ultimate Member Plugin进行电子邮件验证

add_action('um_before_new_user_register', 'require_google_email_for_signup'); 
function require_google_email_for_signup($args) { 
    extract($args); 
    if (!strstr($user_email, '@company1.com')) 
     exit(wp_redirect(add_query_arg('err', 'you_must_have_googlemail'))); 
} 

回答

0

使用此代码:

<?php 
add_action('um_before_new_user_register', 'require_google_email_for_signup'); 
function require_google_email_for_signup($args) { 
    extract($args); 

    /* add multiple domains name here */ 
    $allow_domains = ['company1.com', 'company2.com', 'company3.com']; 

    /* get domain name from user email */ 
    $domain_name = substr(strrchr($user_email, "@"), 1); 

    if (!in_array($domain_name, $allow_domains)){ 
     exit(wp_redirect(add_query_arg('err', 'you_must_have_googlemail'))); 
    } 
} 
?> 
+0

我改变了@ company1.com电子邮件地址对我公司的实际电子邮件域,但该代码没有工作。我试过的每一封电子邮件域名都不允许我注册。 –

+0

我刚刚更新了代码..您使用上面的代码.. –

0

strstr() is more memory intensive compared to strpos(),所以我会建议使用后者。在通过让每个域

  1. 设置一个变量,说$check,以false
  2. 迭代的for循环
  3. 每当发现匹配(:当处理数组,你可以使用下面的迭代逻辑通过使用strpos()),我们将$check设置为true并跳出循环。这将确保我们不遍历匹配时已经发现
  4. 评估$check,并决定是否抛出一个错误/退出

提示整个数组:我会建议将您的用户的电子邮件为小写时使用strpos(或者您可以使用stripos()),因为有些用户可能会输入混合大小写的电子邮件。

考虑到这一点,这里有一个例子:

<?php 
add_action('um_before_new_user_register', 'require_google_email_for_signup'); 
function require_google_email_for_signup($args) { 

    extract($args); 

    // Store allowed domains in an array 
    $allowed_domains = ['@company1.com', '@company2.com', '@company3.com']; 

    // Set flag to false (fail-safe) 
    $check = false; 

    // Iterate through all allowed domains 
    foreach($allowed_domains as $domain) { 

     // If a match is found (remember to use lowercase emails!) 
     // Update flag and break out of for loop 
     if (strpos(strtolower($user_email), $domain) !== false) { 
      $check = true; 
      break; 
     } 
    } 

    if (!$check) 
     exit(wp_redirect(add_query_arg('err', 'you_must_have_googlemail'))); 
} 
+0

此堆栈溢出社区真棒!特里,你的代码工作完美! –