今天我遇到了以下问题:
- 我在Joobla 1.6站点注册了一个新用户
- 通过激活电子邮件链接激活帐户
- 作为新用户登录后,我已经将我的电子邮件更改为一个合成的(foo@bar.bar)
- Joomla的反应是:"ok,没问题,电子邮件看起来很好,那我们就保存它吧。"
Joomla只检查两件事:电子邮件是否写对了,以及它是否被其他用户使用。
为什么Joomla不发送相同的激活电子邮件给新的电子邮件,以便在用户的配置文件中更改它?有什么我应该知道的吗?
这看起来好像在配置文件编辑组件中缺少了一个非常重要的功能。
我如何使它工作而不编辑核心文件?
编辑: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
}
}
也许在照顾新邮件帐户之前也验证一下旧邮件帐户是件好事。
解释:
我得到一个用户名和密码,我登录,我把邮件从真正的所有者更改为我的,我偷了帐户,现在可以用我的邮件激活它。
如果我们验证旧邮件和新邮件,我们确保新邮件是有效的,并且更改是由原所有者请求的。
激活邮件只是一种激活方法。这是为了满足美国等国家的用户信息收集法律,在这些国家,用户在注册时必须确认他们拥有"此"电子邮件地址。这确保了他们自己是注册用户。这就是激活电子邮件的目的。