在Joomla用户个人资料中更改电子邮件后激活用户电子邮件

时间:2011-07-10 10:43:52

标签: email joomla activation joomla1.6

今天我遇到了以下问题:

  1. 我在Joobla 1.6网站上注册了一个新用户
  2. 通过激活电子邮件中的链接激活帐户
  3. 以新用户身份登录后,我已将电子邮件更改为已完成的电子邮件(foo@bar.bar)
  4. Joomla的反应是:'好吧没问题,电子邮件似乎很好,我们保存吧'
  5. Joomla检查的唯一两件事是电子邮件是否正确写入以及是否由其他用户使用。

    为什么Joomla不会将相同的激活电子邮件发送到新电子邮件,以便在用户的个人资料中进行更改?有什么我应该知道的吗?

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

    如何在不编辑核心文件的情况下使其正常工作?

    修改 我写了一个插件,对此进行排序:http://extensions.joomla.org/extensions/access-a-security/site-security/site-protection/18139

3 个答案:

答案 0 :(得分: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
  }
}

答案 1 :(得分:1)

在照顾新邮件帐户之前,也可能会对旧邮件帐户进行验证是一件好事。

说明:

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

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

答案 2 :(得分:-1)

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