com_jumi (또는 다른 외부 (Joomla) 스크립트에서 Joomla에 사용자 로그인

StackOverflow https://stackoverflow.com/questions/1235858

  •  22-07-2019
  •  | 
  •  

문제

특정 이벤트가 발생하면 사용자를 자동으로 로그인해야합니다 (예 : 사용자가 비밀번호를 잊어 버리고 성공적으로 재설정 할 때. 클라이언트 요구 사항에 따라 A는 내장 된 파일을 사용해야합니다. com_jumi 로그인을 만들기 위해 com_user.

JSITE 객체의 기능 로그인을 사용하고 있습니다. $mainframe->login($credentials, $options)
그리고 그 방법은 돌아오고 있습니다 true, 그런 다음 리디렉션을 만듭니다 $mainframe->redirect()
그러나 방문 페이지에는 사용자 로그인이 없습니까 ???

이것을 달성하기위한 어떤 단계를 놓치고 있습니까 ???

도움이 되었습니까?

해결책

나는 이것이 오래된 게시물이라는 것을 알고 있지만, 나는 똑같은 문제를 해결하기 전에 다른 날 에이 게시물을 발견했기 때문에 어쨌든 내 솔루션을 여기에 게시하기로 결정했습니다.

이것은 내가 로그인하기 위해 만든 기능입니다 (나는 기억을 사용하지 않습니다.

function joomla_login($user,$pass) 
{ 
    if ( !$user) return false;
    if ( !$pass) return false;
    $credentials = array( 'username' => $user, 'password' => $pass );
    $login_site =& JFactory::getApplication('site');
    $login_site->login($credentials, $options=array());
    return;
}

다른 팁

//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);
    }
}

나는 사용자 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');  
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top