2010-05-24 36 views
0

我正在尝试制作身份验证插件。 JUser::getInstance()需要一个输入,它应该是id。有什么方法可以使用其他标识符获取用户的实例吗?如用户名,电子邮件等。Joomla JUser getinstance问题

回答

1

可能没有任何这样的方法。但是,如果您确定用户名或电子邮件是唯一的,那么您可以在libraries/joomla/user /中修改文件user.php,并在其中添加一个方法。

getInstanceByEmail($email) 
{ 
    $query = "select id from jos_users where email=".email; 
    // use the code to get the id; 
    return getInstance($id); 
} // this is just a sample code of how it can be achieved 
+0

谢谢,我不知道为什么我没有想到的,>>。 – Rixius 2010-05-24 17:28:46

0

由于Joomla的自己的身份验证是通过检查用户的用户名(当然还有密码)完成的,它必须是唯一的。是的,你可以做一些像@Rixius建议的事情。

这里是我的版本:

// Get a database object 
    $db  = JFactory::getDbo(); 
    $query = $db->getQuery(true); 

    $query->select('id, password'); 
    $query->from('#__users'); 
    $query->where('username=' . $db->Quote($credentials['username'])); 

    $db->setQuery($query); 
    $result = $db->loadObject(); 
    $user = JFactory::getUser(); 

    if ($result) 
    { 
     $user = JUser::getInstance($result->id); 
    }