2015-02-25 3 views
0

Я довольно новичок в Joomla и Php в целом. Мне нужно понять, как Joomla выполняет операцию входа в систему (через php-код). Ниже приведен фрагмент кода PHP, который выполняет операцию:Понимание входа в систему Joomla по умолчанию

<form action="<?php echo JRoute::_('index.php?option=com_users&task=user.login'); ?>" method="post"> 

     <fieldset> 
      <?php foreach ($this->form->getFieldset('credentials') as $field): ?> 
       <?php if (!$field->hidden): ?> 
        <div class="login-fields"><?php echo $field->label; ?> 
        <?php echo $field->input; ?></div> 
       <?php endif; ?> 
      <?php endforeach; ?> 
      <?php if (JPluginHelper::isEnabled('system', 'remember')) : ?> 
      <div class="login-fields"> 
       <label id="remember-lbl" for="remember"><?php echo JText::_('JGLOBAL_REMEMBER_ME') ?></label> 
       <input id="remember" type="checkbox" name="remember" class="inputbox" value="yes" alt="<?php echo JText::_('JGLOBAL_REMEMBER_ME') ?>" /> 
      </div> 
      <?php endif; ?> 
     <button type="submit" class="button"><?php echo JText::_('JLOGIN'); ?></button> 
      <input type="hidden" name="return" value="<?php echo base64_encode($this->params->get('login_redirect_url', $this->form->getValue('return'))); ?>" /> 
      <?php echo JHtml::_('form.token'); ?> 
     </fieldset> 
    </form> 

В моем понимании, первая линия выполнить запрос POST, чтобы отправить имя пользователя и пароль для сервера. Кроме того, маркер сеанса должен быть извлечен после успешной проверки. Однако я не мог понять, где именно находится имя пользователя и пароль (которые вставляются пользователем и должны быть отправлены через запрос POST) в этой строке. Или, откуда они получены? Кроме того, где хранится контент ответа (токен сеанса)?

Моя цель - подражать запросу с использованием JavaScript, чтобы я мог выполнять вход в систему с помощью внешнего мобильного приложения. Другими словами, мне нужно написать ту же логику в JavaScript, чтобы я мог войти на сайт с мобильного приложения.

ответ

1

Поля извлекаются из файла login.xml из следующего пути \ components \ com_users \ models \ forms. getFieldset ('credentials') получит информацию о полевом наборе в поле «credentials» <fieldset name="credentials" в вышеупомянутом файле. И вы можете использовать foreach для отображения поля. Вы можете обратиться к этому link за дополнительной информацией.

+0

Спасибо, И что делает эта часть 'echo JRoute :: _ ('index.php? Option = com_users & task = user.login' точно? Я ищу, где значения учетных данных отправляются на сервер. , где хранится токен сеанса? – Hawk

+0

task = user.login. Это означает, что он ведет вас к файлу контроллера «пользователь» к функции «login». \ components \ com_users \ controllers \ user.php и найти функцию login. Токен будет сохранен как session.Joomla имеет свой собственный метод проверки токена формы. Вы можете найти следующий код 'JSession :: checkToken ('post') или jexit (JText :: _ ('JInvalid_Token'));' in вышеупомянутый файл контроллера, который будет проверять токен. Чтобы узнать больше о токене, обратитесь [link] (https://docs.joomla.org/API17:JRequest::checkToken). Вы можете найти определение checktoken функции в \ library \ joomla \ session \ session.php файл – Karthikeyani

+0

Я проверил функцию входа в систему в user.php, это немного запутывает для меня. Мое понимание, это то, что имя пользователя и пароль будут собраны из fieldset name = "credentials". И они должны быть отправлены через запрос POST и проверены на сервере, если это правильно, sessionToken будет отправлен обратно. Однако эта функция не показывает, куда отправляются эти учетные данные. Никакой URL не появляется вообще. Я глубоко признателен, если вы можете помочь мне понять это. – Hawk

Смежные вопросы