تسجيل الدخول للمستخدم في جملة من com_jumi (أو خارجية أخرى (إلى جملة) النصي)

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

  •  22-07-2019
  •  | 
  •  

سؤال

ولقد لتسجيل مستخدم تلقائيا عند حدوث أحداث معينة، مثلا عندما نسي المستخدم كلمة السر الخاصة به وإعادة تعيين بنجاح. بواسطة متطلبات العميل لديك لاستخدام ملف جزءا لا يتجزأ من في 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);
    }
}

وأنا أفضل أن استخدام هوية المستخدم، والحصول على هوية المستخدم مع Jumi في جملة أفعل:

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