2015-07-05 59 views
1

我無法設置電子郵件在我的網站上執行登錄。我創建一個插件認證,以取代舊,我改變SQL查詢來選擇ID和密碼:用電子郵件作爲用戶名登錄joomla 3.4

$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 

有人可以幫我嗎?

+0

您是否檢查過$ credentials ['username']'和'$ credentials'中包含的內容? – dhh

+0

我做了憑證數組的回顯,它包含了郵件和密碼。也許在服務器端驗證有問題? –

+0

我偏袒解決....我重寫了控制器user.php獲取郵件中的用戶名從郵件傳遞與查詢MySQL的形式。但現在登錄後,我曾經重定向到家...在重定向工作正常之前工作正常頁面...如何工作返回網址? –

回答

1

我解決了,我想分享我的解決方案: 你不需要修改認證插件的joomla.php。

你有/components/com_users/controllers如下修改控制器user.php$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改變「用戶名」和「電子郵件」的所有出現(見下文): <field name="email" type="email" class="validate-email" filter="email" label="E-mail" size="25" required="true" validate="email" />

然後u必須修改jmessage在登錄的情況下未能在你的語言文件。

這一切!

(用於登錄後重定向,在它備份工作的URL添加ITEMID ....)

在這些方式我編輯的核心文件nd我不喜歡。 有無論如何要做一個很好的覆蓋com_users?

相關問題