0

今日、私は次の問題に直面しました。

  1. Joobla1.6サイトに新しいユーザーを登録しました
  2. アクティベーションメールからのリンクでアカウントをアクティベートしました
  3. 新しいユーザーとしてログインした後、メールを作成したメールに変更しました(foo@bar.bar)
  4. Joomlaの反応は次のとおりです。「問題ありません。電子メールは問題ないようです。保存してみましょう。」

Joomlaがチェックしたのは、電子メールが正しく書き込まれたかどうかと、別のユーザーが使用していたかどうかの2つだけでした。

ユーザーのプロファイルで変更するために、Joomlaが同じアクティベーション電子メールを新しい電子メールにサンディングしないのはなぜですか?知っておくべきことはありますか?

これは、その非常に重要な機能がプロファイル編集コンポーネントに欠けているように見えます。

コアファイルを編集せずに動作させるにはどうすればよいですか?

編集:私はこれを整理するプラグインを書きました: http ://extensions.joomla.org/extensions/access-a-security/site-security/site-protection/18139

4

3 に答える 3

2

これを整理する方法が必要な場合は、これを試してください。

onBeforeStoreUserイベントを使用する独自の認証プラグインを作成します。ここでは、ユーザーがメールアドレスを変更するたびにユーザーのメールが正しく検証されることを確認します。

必要に応じて、ユーザーのアカウントを無効にしてから、リンク付きの新しい有効化メールを送信できます。com_usersコードを見て、新規ユーザーの登録とアクティベーションメールの送信に関して登録がどのように処理されるかを確認してください。そこからコードをほぼコピーできます。

プラグインのサンプルコード:

onBeforeStoreUser($user, $isnew) {
  if (!$isnew) {
    // grab code from com_users to generate activation email
    // part of the code makes an activation sequence
    // sql to inject this seq into the users account
    $db = JFactory::getDBO();
    $db->setQuery('
      UPDATE #__users
      SET activation = '.$db->quote($activation_code)).'
      WHERE id='.$user->id.'
    );
    $db->query();
    // send activation email
  }
}
于 2011-07-14T16:18:49.883 に答える
1

新しいメールアカウントを管理する前に、古いメールアカウントも検証することをお勧めします。

説明:

ユーザーとパスワードを取得し、ログインし、メールを実際の所有者から私のものに変更し、アカウントを盗んだので、メールでアクティブ化できるようになりました。

古いメールと新しいメールの両方を検証する場合、新しいメールが有効であり、変更が元の所有者によって要求されたことを保証します。

于 2012-04-11T23:36:59.190 に答える
-1

アクティベーションメールはまさにそれです-アクティベーション方法。これは、ユーザーがサインアップするときに「この」メールアドレスを所有していることをユーザーに確認させる必要がある米国などの国のユーザー情報収集法を満たすことを目的としています。これにより、彼ら自身が彼らにサインアップするものであることが保証されます。これがアクティベーションメールの目的です。

于 2011-07-11T12:08:53.400 に答える