2016-09-29 5 views
0

現在、別のスタジオで開発されたウェブサイトで作業を行っています。それはWordpressで動作し、そのメンバー(ログイン、登録、プロフィールなど)を管理するためにUserProというプラグインを使用します。電子メールドメインと潜在的なサブドメインをホワイトリスト登録する方法

オーナーはウェブサイトに一般的にオープンアクセスを望んでいますが、したがって、特定の電子メールドメインを持つユーザーだけがWebサイトに登録できるようにしたかったのです。この機能はドメインと特定のサブドメインで機能しますが、実際にこのドメインのサブドメインには無限の可能性があることがすぐに分かりました。だから彼らは、この電子メールドメインの潜在的なサブドメインの誰もがウェブサイトに登録する資格があることを許可する必要があります。

以下のコードを参考にして、現在の動作を確認してください。私は所有者のプライバシーのためにURLを編集しましたが、残りのコードはまったく同じです。

case 'email_exists': 
if (!is_email($input_value)) { 
$output['error'] = __('Please enter a valid email.','userpro'); 
} else if (email_exists($input_value)) { 
$output['error'] = __('Email is taken. Is that you? Try to <a href="#" data-       template="login">login</a>','userpro'); 
} 
else if($input_value){ 
$domain = strstr($input_value, '@'); 
$domains = array('@test.com' , '@test.net' , '@alpha.test.com' , '@beta.test.net', '@*.test.com', '@*.test.net'); 
if(!in_array($domain, $domains)) 
$output['error'] = __('Accounts with this email domain are not currently allowed automatic registration. You can request an account via the contact us page. ','userpro'); 
} 
break; 

です。あなたが電子メール '@ test.com'または '@ test.net'を持っていればうまく動作します。 '@ alpha.test.com'や '@ beta.test.net'のように、指定されたサブドメインの1つに電子メールをお持ちの場合は、正常に動作し、登録が可能です。

ただし、「@ oscar.test.com」や「@ delta.test.net」などの別のサービスにサインアップしたい場合は、登録しないでください。

私は '@ *。test.com'を実行すると、可能なサブドメインが動作するようになると思っていましたが、明らかにそうではありません。少なくとも、私はそれについて行く方法ではありません。

この問題に関するお手伝いをさせていただきます。

よろしく、 アダム

答えて

2

は、正規表現とpreg_match()のための仕事のように見えます。

ありチェックする方法はいくつかありますが、あなたの現在の要件に基づいてのみ、以下の4つのオプションは、提出されたメールアドレスへの有効な語尾ある、test.com

  • @ test.net @

    • これは(@|\.)test\.((com)|(net))$として正規表現で記述することができ.test.com
    • .test.net

    だからあなたのコードを更新するために、あなたは置き換えることができ、

    else if($input_value){ 
    
        // your code here 
    
    } 
    

    、あなたの例では、ここでhttps://regex101.com/r/JtUxmZ/5

  • +0

    正規表現と

    else if (!preg_match('~(@|\.)test\.((com)|(net))$~i', $input_value)) { $output['error'] = __('Accounts with this email domain are not currently allowed automatic registration. You can request an account via the contact us page. ','userpro'); } 

    プレイがドメインtest.comとnewtest.com同じ結果を返します。 – stweb

    +0

    ええ、私のコードに誤りがありました - 更新 - 必要に応じて動作するはずです – Steve

    +0

    これは治療になりました。迅速な対応をいただき、ありがとうございました。ずっと簡単です。ありがとう。 –

    関連する問題