Как сохранить две сессии за один раз для единственной страницы?

У меня есть инструмент онлайн-сервиса, где сами пользовательские регистры и используют его.

У меня есть панель административного контроля для этого сервиса. Иногда, когда пользователи говорят нам некоторые странные вещи о данных и usuability, мы должны проверить их, как будто они входили в систему...

таким образом, я решил иметь страницу в панели администрации, поскольку 'входят в систему как xx пользователь', где xx является пользователем нашего сервиса..

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

Но теперь я не должен выходить из системы и затем входить в систему как администратор после каждый раз, я вошел в систему как другой пользователь..

Я могу установить две одновременных сессии за один раз для единственной страницы/сервиса???

(т.е.) на одной вкладке браузера я действую как администратор, и на другой вкладке я буду действовать как пользователь?

Любые идеи..

Я помню 've замеченный phpbb использование их...

1
задан Vijay 3 August 2010 в 11:26
поделиться

6 ответов

Сессия - это своего рода глобально доступный массив, вы можете разделить внешние и внутренние сеансы следующим образом:

<?php

    $_SESSION['frontend']['logged_id'] = true;
    $_SESSION['backend']['logged_id'] = false;

?>

Ваш скрипт поможет мне дать вам более подробный пример кода.

Обновление

  1. Добавьте префиксы к установленным сеансам. Примерно так: $ _ SESSION ['my_CID'] = $ cid;
  2. Вы должны покопаться в коде серверной части / администратора и найти, где происходит действие выхода.
  3. Это действие может убить весь сеанс следующим образом: session_destroy () или unset ($ _ SESSION); .
  4. Используйте приведенный ниже код, чтобы не прерывать сеансы с префиксом.

Вот код:

<?php
    foreach ($_SESSION as $key => $value)
    {
        if (substr($key, 0, 3) == 'my_')
        {
            continue;
        }
        unset($_SESSION[$key]);
    }
?>
2
ответ дан 2 September 2019 в 22:29
поделиться

У вас не может быть двух разделенных сеансов, но вы можете просто добавить дополнительную переменную к пользовательскому сеансу, которая сообщает, что вы вошли в систему как администратор.

0
ответ дан 2 September 2019 в 22:29
поделиться

Несколько идей:

  • использовать два разных браузера
  • подключаться с двух разных (виртуальных) машин
  • использовать что-то вроде CookiePie, чтобы разрешить разные файлы cookie для каждой вкладки
  • подключиться один экземпляр через прокси
  • , если вы можете, разместите одно и то же веб-приложение через два разных домена и используйте по одному для каждого сеанса
  • используйте файл hosts для предоставления дополнительного имени домена
  • , если сеанс распространяется через URL вместо файлов cookie, тогда это будет работать естественным образом, но это будет иметь всевозможные неприятные последствия для удобства использования и безопасности
0
ответ дан 2 September 2019 в 22:29
поделиться

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

Вам нужно надежное решение, и для этого я предлагаю такую ​​схему: поддерживать переменные сеанса для:

  • real_user_name
  • real_login_time
  • virtual_user_name
  • virtual_login_time

Итак, когда администратор хочет войдите как тот, кого вы установили последние два. Ваша безопасность обычно должна проверять последние два. Доступ к админке должен быть основан на первых двух.

0
ответ дан 2 September 2019 в 22:29
поделиться

Я не знаю, можно ли использовать это решение вашей проблемы, но если вы используете firefox, вы можете запустить браузер два раза с двумя разными профилями. У вас не будет приложений на одной вкладке, но, по крайней мере, у вас будет один и тот же браузер с разными сеансами. Если вы скопируете старый профиль, у вас также должна быть такая же история и плагины.

Вам придется использовать «-P -no-remote» в качестве дополнительных параметров к исполняемому файлу firefox, если вы решите это сделать.

0
ответ дан 2 September 2019 в 22:29
поделиться

Я думаю, что может быть два решения:

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

  • Во-вторых, что предпочтительнее, вы можете установить в объекте сеанса два объекта, один для администратора, а другой для службы.

0
ответ дан 2 September 2019 в 22:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: