web-dev-qa-db-ja.com

特定のメールアドレスでアカウント申請者を制限する

こんにちは私は私の大学の学生組織のウェブサイトに取り組んでいます。スパムを防ぐために、大学からのメールアドレスのみでアカウントの申請者を制限する方法を探していましたが、方法はわかりませんでした

1
user4109

drupal 6では、組み込みのアクセスルールを使用して、ユーザーのサインアップを特定のドメインに制限できます。これは、admin/user/rules/addにあります。

これは、drupal 7には存在しません。これは、機能が User constrictions というcontribモジュールに移動されたためです。

3
digital

ユーザー登録フォームに検証関数を追加するカスタムモジュールを記述して、電子メールアドレスが正しくない場合にフォームが検証されないようにすることができます。

まず、Drupal ser_register_form を使用した検証関数について hook_form_FORM_ID_alter を使用してフォームに通知します。

function mymodule_form_user_register_form_alter(&$form, &$form_state) {
  $form['#validate'][] = 'mymodule_user_register_validate';
}

次に、検証関数を記述します。私が間違っていなければ、メールアドレスは$form_state['values']['mail'] ここに。

function mymodule_user_register_validate($form, &$form_state) {
  $valid_email = false;

  // Write your own code here to check if the email address is valid.
  // If so, set $valid_email to true.

  // If the email address is not valid, tell Drupal that validation failed.
  if (!$valid_email) {
    form_set_error('mail', t('The e-mail address %email is not valid for this site.', array('%email' => $form_state['values']['mail'])));
  }
}

上記のコードは意図的に書かれていますが、テストされていません。

3
marcvangend

デジタルの答えに基づいて、同じDrupalバージョンで同じ問題が発生しました。組み込みのアクセスルールを調べ、2つのルールを作成しました。1つはマスクに適合するすべての電子メールアドレスを拒否するルール"%"(つまり、すべての電子メールアドレス)およびマスク "%@%.edu"に適合する電子メールアドレスのみを許可するアドレス。ルールが ".edu"アドレスで競合する場合でも機能し、結果として登録のみが許可されます。 「.edu」メールアドレス。

その質問をしてくれたuser4109に感謝し、正しく簡単な解決策を指摘してくれたデジタルに感謝します。

1
djmusic