3

カスタム joomla コンポーネントを構築しており、アカウント パスワードを使用せずにログイン セッションを設定する方法を検討しています。私は既に持っています:

$app = &JFactory::getApplication('site');

$result = $app->login(array(

    'username' => 'james',
    'password' => 'password'

));

明らかにユーザーのパスワードが必要です。ユーザー ID とユーザー名にアクセスできるので、これらのハンドルのいずれかを使用できます。ユーザーのログインに使用できる別のオブジェクトまたはメソッドはありますか、または必要なすべての $_SESSION 変数を手動で設定するなど、使用できるカスタム ソリューションはありますか?

事前に感謝します、どんな助けも大歓迎です:)

4

2 に答える 2

6

重要: // 必要なセッション変数を登録した後、セッション オブジェクトを追加する必要があります

// Register the needed session variables
$session =& JFactory::getSession();
$session->set('user', $jUser);

素晴らしい、thx

于 2013-01-09T15:03:22.997 に答える
5
//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);

            // Register the needed session variables
            $session =& JFactory::getSession();
            $session->set('user',$jUser);


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

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

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

}
于 2012-09-08T19:31:31.210 に答える