在Joomla用户配置文件中更改电子邮件后激活用户电子邮件



今天我遇到了以下问题:

  1. 我在Joobla 1.6站点注册了一个新用户
  2. 通过激活电子邮件链接激活帐户
  3. 作为新用户登录后,我已经将我的电子邮件更改为一个合成的(foo@bar.bar)
  4. Joomla的反应是:"ok,没问题,电子邮件看起来很好,那我们就保存它吧。"

Joomla只检查两件事:电子邮件是否写对了,以及它是否被其他用户使用。

为什么Joomla不发送相同的激活电子邮件给新的电子邮件,以便在用户的配置文件中更改它?有什么我应该知道的吗?

这看起来好像在配置文件编辑组件中缺少了一个非常重要的功能。

我如何使它工作而不编辑核心文件?

编辑:

我创建了一个插件来处理它:http://extensions.joomla.org/extensions/access-a-security/site-security/site-protection/18139

EDIT2:

该插件可在GitHub上获得https://github.com/WooDzu/plg_emailactivation

如果你想要一个排序的方法,那么试试这个:

编写自己的身份验证插件,使用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
  }
}

也许在照顾新邮件帐户之前也验证一下旧邮件帐户是件好事。

解释:

我得到一个用户名和密码,我登录,我把邮件从真正的所有者更改为我的,我偷了帐户,现在可以用我的邮件激活它。

如果我们验证旧邮件和新邮件,我们确保新邮件是有效的,并且更改是由原所有者请求的。

激活邮件只是一种激活方法。这是为了满足美国等国家的用户信息收集法律,在这些国家,用户在注册时必须确认他们拥有"此"电子邮件地址。这确保了他们自己是注册用户。这就是激活电子邮件的目的。

相关内容

  • 没有找到相关文章

最新更新