Как сохранить две сессии одновременно для одной страницы? - PullRequest
1 голос
/ 03 августа 2010

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

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

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

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

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

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

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

Любые идеи ..

Я помню, что видел phpbb, использующий их ...

Ответы [ 7 ]

1 голос
/ 03 августа 2010

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

<?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]);
    }
?>
0 голосов
/ 15 июня 2011

Как было предложено в предыдущем посте, вы можете использовать плагин Cookpie для Firefox, чтобы иметь две отдельные личности на каждой вкладке браузера - но это расширение не работает с Firefox 4 - (они говорят, что работают над этим ....) Однако есть более новое подобное расширение под названием Multifox, которое работает в Firefox 4. Вы можете попробовать это.

0 голосов
/ 03 августа 2010

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

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

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

0 голосов
/ 03 августа 2010

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

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

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

0 голосов
/ 03 августа 2010

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

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

0 голосов
/ 03 августа 2010

То, что вы ищете с этой линией рассуждений - это, в основном, клочок.

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

  • real_user_name
  • real_login_time
  • virtual_user_name
  • virtual_login_time

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...