2016-03-13 15 views
1

У меня есть обратный/входной логин.Codeigniter Session ID issue

Но использование сеанса codeigniter, похоже, использует тот же идентификатор сеанса для обоих. Поэтому, если я уничтожаю сессию для бэкэнда при выходе из него, сеанс также уничтожается на переднем конце. Если i только unset() userdata, идентификатор сеанса остается и следующий администратор, входящий в систему, использует тот же сеанс, который не является хорошим. Видимо, CI автоматически генерирует идентификаторы сеансов. Могу ли я сделать это вручную?

Любые предложения? Пожалуйста, помогите, я bean проверяю сеть в течение нескольких часов, и я не могу найти решение.

ответ

0

Используете ли вы различные установки Codeigniter для интерфейса и бэкэнд? Если это так, вы можете установить разные значения sess_cookie_name в файле config.php приложения.

Посмотрите здесь: https://www.codeigniter.com/user_guide/libraries/sessions.html#session-preferences

+0

Я сделал это, да. Проблема, кажется, только в том случае, если я получаю фронт и обратно из одного и того же браузера. По-видимому, сеанс настроен для текущего браузера и всех окон в нем, что очень раздражает. Если i print_r() $ this-> session-> all_userdata()) для задней части, он отображает текущее состояние, но если я вхожу в систему на передней панели и, например, добавляю что-то в корзину, массив в назад изменения с данными тележки. Это просто убивает меня. –

+0

Можете ли вы показать нам свой массив данных интерфейса и бэкэнда? Я думаю, что вы можете хранить данные о тележке/входе непосредственно, когда вы могли бы использовать другой массив для фронта и назад, давайте посмотрим, сможем ли мы это решить :) – Davo

+0

это echo \t (session_id()); c6f7a7e1f74e4bb1e3c68d65c97fe35970b43d14, и это print_r ($ this-> session-> all_userdata()); Массив ([__ci_last_regenerate] => 1457906795 [admin_user_id] => 24 [admin_username] => 1111) –

0

Вы можете использовать библиотеку сеанса Codeigneter, чтобы справиться с этим. Если пользователь входит в систему администратора, вы можете создать (и проверить) переменную в сессии, как, то есть:

$this->session->userdata('is_admin',TRUE); 

И хранить данные в конкретном объекте в сессии только в интерфейсе. Когда logout удаляет только данные сеанса, а затем пользователь все равно будет зарегистрирован в интерфейсе.

https://ellislab.com/codeigniter/user-guide/libraries/sessions.html

+0

Проблема с этим автоматически сгенерированным идентификатором сеанса, я полагаю, это ограничение браузера. Я не могу контролировать идентификатор сеанса, и браузер использует этот идентификатор независимо от того, вошли ли вы в систему или просто зашли на страницу. Он просто предупреждает об этом с заголовком http. –

+0

Да, но этот идентификатор сеанса автогенерируется, и он будет переназначен при выходе из системы. Я, по-видимому, не понимаю проблему, но если вы хотите, чтобы два разных пользователя вошли в систему (интерфейс и бэкэнд), вы должны создать две разные системы регистрации, с их проверками (is_admin, is_user) или что-то вроде этого. –

+0

Я могу войти в систему одновременно, проблема заключается в том, что оба пользователя используют один и тот же сеанс, и если вы уничтожаете сеанс на одном конце, это также влияет на другой конец. Оба используют один и тот же идентификатор сеанса и разные пользовательские данные, назначенные мной, но идентификатор сеанса является assasign из codeigniter или браузера, я не знаю. Я думаю, что это ограничение браузера, потому что я пытался войти в facebook, так же, как и в одном браузере с разными пользователями одновременно, но это невозможно. –