Как создать кнопку для закрытия активной сессии в joomla 2.5

Мне нужно создать кнопку для выхода из Joomla, я имею в виду, что пользователь обычно входит в сеанс, но затем должен нажать кнопку, которую я создал, чтобы закрыть этот сеанс, я знаю, как проверить, вошел ли какой-либо пользователь в сеанс, и я знаю, как чтобы отобразить кнопку, я не знаю, как заставить эту кнопку закрыть фактический сеанс пользователя (выйти из системы).

Это базовый код, который у меня есть:

<?php $user =& JFactory::getUser(); ?>
<?php if ( ($user->id)==0 ) : ?>

    //***code for not opened session***

<?php else : ?>

    <form id="form1" name="form1" method="post" action="">
      <input type="button" name="button" id="button" value="Close Session" />
    </form>

<?php endif ?>

Как заставить эту кнопку закрыть сеанс joomla 2.5, я проверил страницу API, но не нашел ее.


person Elessar Alcarin    schedule 12.03.2012    source источник


Ответы (7)


Используйте эту ссылку -

http://www.domain.com/index.php?index.php?option=com_user&task=user.logout&token=<?php echo JUtility::getToken(); ?>
person Brent Friar    schedule 13.03.2012
comment
Спасибо, хотя ссылка не работала (сообщение Joomla 404), мне удалось заставить ее работать так: ‹input class=button type=submit value=Finalizar sesión name=Submit› ‹input type=hidden value=com_users name=option › ‹тип ввода=скрытое значение=user.logout имя=задача› ‹тип ввода=скрытое значение=1 имя=‹?php echo JUtility::getToken(); ?›› - person Elessar Alcarin; 15.03.2012

Чтобы создать кнопку выхода, вы можете создать ссылку с классом «кнопка».

В Joomla > 1.7 (также 2.5.x) вам нужна часть JUtility::getToken() для успешного входа в систему: используйте необязательную часть «возврата» для перенаправления пользователя обратно на страницу, где пользователь был при нажатии кнопки

<a class="button" href="<?php echo JRoute::_('index.php?option=com_users&task=user.logout&'. JUtility::getToken().'=1'); ?>">
    Logout
</a>

Если вы хотите перенаправить обратно на страницу, на которой находился пользователь, когда он нажал кнопку выхода, добавьте параметр возврата в кодировке base64:

<a class="button" href="<?php echo JRoute::_('index.php?option=com_users&task=user.logout&'. JUtility::getToken().'=1&return='.base64_encode(JURI::current())); ?>">
    Logout
</a>
person Beatniak    schedule 13.11.2012
comment
Для Joomla 3 вам нужно использовать JSession::getFormToken() вместо JUtility::getToken(). - person Mads Mogenshøj; 18.11.2012

на самом деле правильная ссылка

JRoute::_('index.php?option=com_users&task=user.logout&'. JUtility::getToken() .'=1');
person Richie    schedule 20.07.2012

Это также работает для joomla 2.5. Я заменил JURI::current() на $_SERVER['REQUEST_URI'] из кода @Beatniak

<a class="button" href="<?php echo JRoute::_('index.php?option=com_users&task=user.logout&'. JUtility::getToken().'=1&return='.base64_encode($_SERVER['REQUEST_URI'])); ?>">
    Logout
</a>
person themhz    schedule 03.08.2013

Вы также можете попробовать это для Joomla 2.5

<a href="index.php?option=com_users&task=user.logout&<?php echo JUtility::getToken(); ?>=1">
<input  type="button" name="Submit" class="button" value="Logout">
</a>

работает хорошо для меня

person Desperate Developer    schedule 23.01.2014

Ссылка на php-страницу

<a href="/link.php">Sign Out</a>

На странице php просто завершите сеанс, затем перенаправьте на новую страницу.

<?php
    session_destroy();   //session is now over


    header( 'Location: http://www.yoursite.com/welcomepage.php' ) ; //relink to a page, with user logged out

?>

Теперь пользователь вышел из системы и перенаправлен на страницу приветствия.

person JimmyBanks    schedule 12.03.2012
comment
Спасибо, один вопрос, session_destroy просто закрывает текущую сессию или закрывает все сессии? - person Elessar Alcarin; 12.03.2012
comment
session_destroy закрывает сеанс только для сеанса определенного пользователя. Не все остальные. - person JimmyBanks; 12.03.2012
comment
Просто чтобы вы знали, Элассар, поскольку вы новичок, если на ответ дан правильный ответ, установите флажок слева от ответа, чтобы принять его. Ваше здоровье - person JimmyBanks; 12.03.2012
comment
+1, потому что это быстрый и грязный способ. Однако у этого есть свои издержки, вы теряете все переменные сеанса из этого конкретного клиента сеанса, когда вы выполняете session_destroy();. Кроме того, чтобы выполнить этот код, вы должны иметь его в каком-то другом файле контроллера, что требует определенных усилий для окончательного решения, когда то же самое решение может быть установлено с помощью другого, более простого подхода. - person themhz; 04.08.2013

В Joomla 2.5 вам нужно создать новый пункт меню под названием «Выход» и выбрать тип меню «Диспетчер пользователей — форма входа».

При этом, если пользователь вошел в систему, он перейдет на страницу с кнопкой выхода вместо формы входа.

Также, если вы установите права доступа, чтобы отображать этот пункт меню выхода только для зарегистрированных пользователей.

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

person Foo-Wing Li    schedule 17.05.2013