2016-08-23 3 views
0

У меня возникли проблемы с сессиями на несколько дней теперь в моей производственной средеPHP смешиваясь сессий

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

  1. бревен Пользователь А в
  2. бревен Пользователь B. Теперь, когда вы вернетесь к User A его сеанс был перезаписан пользователем B. Таким образом, у меня есть два пользователей доступ "к же сессия.

Боковые ноты:

  1. У меня есть session_start() на самом верху каждой страницы с помощью переменных сеанса
  2. Я использую протокол HTTPS с действительным сертификатом
  3. Cache не проблема , Я уже пытался установить заголовки, чтобы избежать кеширования

Я использую PHP 5.4 (я использовал 5.6 раньше и понижен, надеясь, что это решит мою проблему) и это мой php.ini:

session.save_path = "/ TMP"

session.cookie_secure = 1

session.use_cookies = 1

session.use_only_cookies = 1

session.name = PHPSESSID

session.entropy_length = 32

session.cache_limiter = NoCache

session.cache_expire = 180

session.hash_function = sha256

И это основная структура моей страницы аутентификации:

session_start(); 
... // after connection with the database I retrieve id and name 
$_SESSION['id_logado'] = $user_id; 
$_SESSION['nome_logado'] = $user_name; 

Я уже дважды проверял каждую строку кода на каждой странице. Нет имени переменной $ id_logado, поэтому оно не должно мешать этому. Кэш , вероятно, не проблема, потому что у меня есть заголовки, чтобы избежать кеширования сразу после session_start. Я связался с Bluehost, чтобы попросить о помощи, и, конечно, они понятия не имеют и обвиняют меня.

+0

Ваше описание того, что вы считаете проблемой, неточно. Когда пользователь B регистрирует свою информацию, пользователь заменяет его как информацию. Они ничего не «разделяют». Что вы ожидаете от вас, когда пользователь B входит в систему? Если вы считаете, что есть действительно проблема, пожалуйста, покажите нам этот код. – Dave

+0

Только 1 пользователь должен войти в систему каждый сеанс или моя логика здесь неправильна? –

+0

Можете ли вы объяснить, почему вы считаете, что существует сеанс «singleton» как он где? Как вы пришли к такому выводу, что сеанс пользователя А заменяется? – Pogrindis

ответ

0

Я нашел решение.

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

Решение: Я создал новую папку внутри своего домашнего диска и предоставил 777 разрешений. Обновлен файл php.ini, чтобы использовать эту папку вместо/tmp, и теперь у меня есть тонны сессий, которые были правильно сгенерированы.

Смежные вопросы