Я довольно новичок в 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, чтобы я мог войти на сайт с мобильного приложения.
Спасибо, И что делает эта часть 'echo JRoute :: _ ('index.php? Option = com_users & task = user.login' точно? Я ищу, где значения учетных данных отправляются на сервер. , где хранится токен сеанса? – Hawk
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
Я проверил функцию входа в систему в user.php, это немного запутывает для меня. Мое понимание, это то, что имя пользователя и пароль будут собраны из fieldset name = "credentials". И они должны быть отправлены через запрос POST и проверены на сервере, если это правильно, sessionToken будет отправлен обратно. Однако эта функция не показывает, куда отправляются эти учетные данные. Никакой URL не появляется вообще. Я глубоко признателен, если вы можете помочь мне понять это. – Hawk