从com_jumi(或其他外部(到joomla)脚本)在joomla中登录用户

从com_jumi(或其他外部(到joomla)脚本)在joomla中登录用户,joomla,session,joomla1.5,Joomla,Session,Joomla1.5,当某些事件发生时,我必须自动记录用户,例如当用户忘记时 他的密码并成功重置。根据客户要求,a必须使用嵌入的文件 在com\u jumi中进行登录,而不是com\u用户 我正在使用JSite对象的函数login,如:$mainframe->login($credentials,$options) 该方法返回true,然后我重定向$mainframe->redirect() 但是在登录页面中没有用户登录 我是否错过了完成此任务的一些步骤 我知道这是一篇老文章,但由于我自己在解决同一个问题前几天发现了

当某些事件发生时,我必须自动记录用户,例如当用户忘记时 他的密码并成功重置。根据客户要求,a必须使用嵌入的文件 在
com\u jumi
中进行登录,而不是
com\u用户

我正在使用JSite对象的函数login,如:
$mainframe->login($credentials,$options)

该方法返回
true
,然后我重定向
$mainframe->redirect()

但是在登录页面中没有用户登录


我是否错过了完成此任务的一些步骤

我知道这是一篇老文章,但由于我自己在解决同一个问题前几天发现了这篇文章,我还是决定在这里发布我的解决方案

这是我创建用于登录的函数(我没有使用“记住我”选项):


我更喜欢使用用户ID,要在Joomla中使用Jumi获得用户ID,我需要:

defined('_JEXEC') OR defined('_VALID_MOS') OR die( "Direct Access Is Not Allowed" );  

$jAp = & JFactory::getApplication();  
$user = & JFactory::getUser();  
echo $user->get('id');  

您是否检查了是否调用了$mainframe->login(),以及$credentials是否具有正确的数组?数组密钥必须包含用户名和密码$如果你想让joomla保持一个“记住我”的cookiePerfect,我发现这是所有选项中最简单的一个,谢谢你的回复!虽然一个代码片段可以回答这个问题,但添加一些附加信息仍然很好,比如解释等等。。
//log user in
if(!JFactory::getUser()->id)
{
    $email = (string)$response['linkedin']->{'email-address'};

    $db = JFactory::getDbo();
    $app = JFactory::getApplication();

    $sql = "SELECT * FROM #__users WHERE email = " . $db->quote($email);
    $db->setQuery($sql);
    $result = $db->loadObject();

    if($result->id)
    {
        $jUser = JFactory::getUser($result->id);
        //$userarray = array();
        //$userarray['username'] = $jUser->username;
        //$userarray['password'] = $jUser->password;
        //$app->login($userarray);              

        $instance = $jUser;     
        $instance->set('guest', 0);


        $instance->set('aid', 1);
        $instance->set('usertype', 'Registered');


        // Register the needed session variables

        $session->set('user',$instance);


        // Check to see the the session already exists.                        
        //$app->checkSession();
        //$app->_createSession($session->getId());


        // Update the user related fields for the Joomla sessions table.
        /*$db->setQuery(
                'UPDATE '.$db->nameQuote('#__session') .
                ' SET '.$db->nameQuote('guest').' = '.$db->quote($instance->get('guest')).',' .
                '   '.$db->nameQuote('username').' = '.$db->quote($instance->get('username')).',' .
                '   '.$db->nameQuote('userid').' = '.(int) $instance->get('id') .
                ' WHERE '.$db->nameQuote('session_id').' = '.$db->quote($session->getId())
        );
        $db->query();*/

        // Get the session object
        $table = & JTable::getInstance('session');
        $table->load( $session->getId() );

        $table->guest       = $instance->get('guest');
        $table->username    = $instance->get('username');
        $table->userid      = intval($instance->get('id'));
        $table->usertype    = $instance->get('usertype');
        $table->gid         = intval($instance->get('gid'));

        $table->update();                        

        // Hit the user last visit field
        $instance->setLastVisit();          

        //return true;

        $app->redirect('index.php?option=com_community&view=profile');
    }
    else
    {
        $url = "index.php?option=com_community&view=register";
        $app->redirect($url,'We did not find your email address in our system. Please register.');
        //echo "redirect to registration page";
        //exit();


        //$url = 'index.php?option=com_users&view=registration&name=' . $user_profile['name'] . '&username=' . $user_profile['username'] . '&email=' . $user_profile['email'];
        //$url = JRoute::_($url);
        //$app->redirect($url);
    }
}
defined('_JEXEC') OR defined('_VALID_MOS') OR die( "Direct Access Is Not Allowed" );  

$jAp = & JFactory::getApplication();  
$user = & JFactory::getUser();  
echo $user->get('id');