发送电子邮件作为登录joomla 3.4的用户名

时间:2015-07-05 20:22:01

标签: php xml joomla

我无法设置电子邮件以在我的网站中执行登录。我创建了一个插件身份验证来覆盖我更改SQL查询以选择id和密码的现有身份验证:

$query = $db->getQuery(true)
    ->select('id, password')
    ->from('#__users')
    ->where('**email**=' . $db->quote($credentials['username']));

我还尝试修改login.xml,如下所示:

 <field name="username"
        type="email"
        class="validate-email"
        filter="email"
        label="COM_USERS_LOGIN_EMAIL_LABEL"
        size="25"
        required="true"
        validate="email"
        />

当我尝试登录时,我得到:

You can't access to the private section of the site

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

我解决了,我想分享我的解决方案: 你不需要修改认证插件的joomla.php。

您必须在user.php中修改控制器/components/com_users/controllers,如下所示: $data['email'] = $input->$method->get('email', '', 'EMAIL'); $db = JFactory::getDbo(); $query = $db->getQuery(true) ->select('username') ->from('#__users') ->where('email=' . $db->quote($data['email'])); $db->setQuery($query); $utente = $db->loadResult(); $data['username'] = $utente;

通过这种方式,您可以使用表单中传递的电子邮件选择正确的用户名。

现在,您可以修改登录的形式(/components/com_users/models/form/login.xml更改&#34;用户名&#34;的所有出现次数&#34;电子邮件&#34;(见下文): <field name="email" type="email" class="validate-email" filter="email" label="E-mail" size="25" required="true" validate="email" />

然后你必须在你的语言文件中登录失败时修改jmessage。

这就是全部!

(对于登录后重定向,将URL中的Itemid添加回工作....)

通过这种方式我编辑了核心文件,我不喜欢。 无论如何要对com_users进行良好的覆盖?

答案 1 :(得分:-1)

它不会更简单:

注册

  • 隐藏用户名字段(CSS)
  • 保存(在创建和编辑过程中),在用户名字段中填写该电子邮件的值。 (我不是开发人员,在这里不能提供帮助)也许,您有个想法/建议吗?

登录

  • 使用简单的语言替代,将“用户名”标签更改为“电子邮件”(电子邮件和警报中的内容相同)