| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Сессия, переменная, вкладки |
| Автор: VasRip 20.2.2014, 14:08 |
| Доброго всем здравия. Есть такая проблема на сайт есть регистрация по имени и капча. Все работает гуд. Проблема в том что все переменные хранятся в сессии. А когда открывается новая кладка она использует туже самую сессию что и первая вкладка и затирает все переменные первой вкладки. Как это можно победить? |
| Автор: bars80080 21.2.2014, 08:55 |
| выявить смысловую нагрузку различных данных и оставить в сессии только те, что имеют отношение к сохранению данных пользователя в одной сессии к примеру, исключая специфические задачи, в сессии имеет смысл хранить только одно: идентификатор авторизованного пользователя. для хранения всех прочих данных существует множество способов, начиная с БД и заканчивая файлами. мне лично кажется, что вы храните в сессии многие данные только потому, что это "удобно" и "не надо заморачиваться с разными механизмами". однако, очевидно, в этом случае ваша архитектура приложения идёт лесом |
| Автор: VasRip 21.2.2014, 09:45 |
| ДА так удобней поскольку мне хранить по факту нужно только 6 цифр номера пользователя и две даты по которым идет выборка из БД. Пользователь может только смотреть в БД. Причем пользователь понятие совершенно абстрактное не как не связанное с каким-то конкретным лицом. Огромная защита там совершенная не нужна и хранение больших данных нет о пользователе. И какбы нет особого смысла нагружать сервак писанием в файл или в БД. |
| Автор: ksnk 21.2.2014, 12:20 |
| VasRip, Что такое регистрация? Значит ли это, что зарегистрировавшийся юзер имеет право болтаться по сайту без постоянного заполнения имени и пароля? в том числе и открывать сайт в отдельной вкладке? О чем вообще вопрос? О нелегкой жизни отладчика приложения? Можно открывать окно в "режиме инкогнито" в хроме. Или в другом профиле в Firefox. |
| Автор: VasRip 21.2.2014, 12:49 |
| регистрация-> ввод "номера пользователя", и капчи. открывается другая страничка в тойже вкладке. там пользователь может только менять дату и наживать 1 кнопку которая выбирает из бд данные и выводит их. И все. просто суть в том что иногда может понадобится 1 человеку в ходить под разными "номерами пользователя" и смотреть одновременно данные по разным "номерам пользователя" |
| Автор: ksnk 21.2.2014, 13:27 |
| VasRip, Нужно подумать над архитектурой приложения и "действительно ли оно нужно юзеру?" Если, "да, именно так и надо", то можно заводить "сессионный" ключик, генерировать его при регистрации, удалять по мере устаревания, и хранить его в javascript открытого окна. Общение окна с сервером должно вестись с помощью ajax. Каждый запрос серверу будет сопровождаться ключиком-дополнительным параметром. Если необходимо открытие нового окна, с тем-же "юзером", можно временно сохранять ключик в броузерных куках. Технически, задача решается, но уровень геморроя может местами зашкаливать. |
| Автор: VasRip 21.2.2014, 13:36 |
| ajax не вариант. А вот хранить данные в javascript наверно стоит. нужно подумать спс вам |
| Автор: AJIeKceuD 21.2.2014, 15:24 |
| Я бы посмотрел на возможность поменять начальную логику. Две сессии в одном браузере... по-моему это утопия. Почему не сделать отдельно учетные записи и отдельно "номера пользователя"? И дать возможность в рамках одной учетной записи заводить несколько номеров пользователя. |
| Автор: VasRip 21.2.2014, 15:31 |
| AJIeKceuD я двумя руками ЗА. а вот заказчик хочет именно так (((((( |
| Автор: AJIeKceuD 21.2.2014, 16:45 |
| А нужны ли вообще куки и сессии? вбил пользователь номер и капчу, его перекинуло на страницу ...?number=123&pass=blablabla pass сгенерирован в момент редиректа и связан с номером где-то в бд. Там у pass можно добавить срок жизни и т.д., это уже детали. Новая вкладка с новой формой авторизации перекинет на ?number=321&pass=blablabla2 |
| Автор: VasRip 25.2.2014, 10:34 |
| Решил проблему ))) через костыль ))) все также в сессиях и осталось и все такое только + костыль из 3 строк Всем спс |