Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Конфликтующие сессии, 2х разных движков на одном сайте 
:(
    Опции темы
flashaa
Дата 13.7.2007, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 796
Регистрация: 7.3.2006

Репутация: 19
Всего: 25



Привет снова.
Такая проблема:

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

Время жизнии сессии своего движка я устанавливаю вот так:

Код

<?php
unset($user_name);
unset($user_id);
session_set_cookie_params(60*60*24);
session_start();


Т.е. при  каждом открытии страницы сессия должна продлеваться на сутки.
У меня был другой проект, сессии в котором работали абсолютно так же.  И ведь работали. А сейчас у меня почему-то постоянно сбрасываются сессии моего под-проекта примерно каждые 5-10 минут.  Я предположил, что возможно в сессиях основного движка сайта есть аналогичные переменные сессии, либо просто сами сессии "перебиваются".

Что скажите об этом и о моем коде?

Пс схожие темы были, но там про время сессий - имхо моя проблема - немного другое.

Это сообщение отредактировал(а) flashaa - 13.7.2007, 10:04
PM MAIL   Вверх
Golda
Дата 13.7.2007, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 26.3.2007
Где: Ариель, Израиль

Репутация: 20
Всего: 42



Попробуйте, если есть возможность, вынести свой подпроект в другую папку, которая не лежит под основным сайтом, и посмотрите, будут ли перебиваться сессии. Если да, ищите, что делает с сессиями основной движок. Для начала посмотрите, не изменена ли session.cookie_lifetime в основном файле в .htaccess. В любом случае, если пользователь получает сессионные куки из кода основного движка, Ваши настройки не сработают. А возможно, там еще и session_destroy() где-то есть.
 


--------------------
"For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics
PM MAIL   Вверх
flashaa
Дата 14.7.2007, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 796
Регистрация: 7.3.2006

Репутация: 19
Всего: 25



Cессии действительно конфликтовали. Логаут на сайте приводил к потере данных в движке.
Тогда другой вопрос:
ведь могут же нормально существовать отдельно движок сайта в корне и движок форума(например IPB) в папке сайт/форум/
не знаете, как там реализовано "разделение" сессий?

Это сообщение отредактировал(а) flashaa - 14.7.2007, 11:47
PM MAIL   Вверх
Golda
Дата 15.7.2007, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 26.3.2007
Где: Ариель, Израиль

Репутация: 20
Всего: 42



Можно. Нужно только использовать разные имена сессий. Используйте в своем подпроекте session_name('your_unique_session_name');  

Только учтите, что вызывать эту фкнкцию нужно до session_start() и в каждом скрипте, который использует Вашу сессию. Убадитесь также, что в php.ini отключен session.auto_start


--------------------
"For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics
PM MAIL   Вверх
Glory
Дата 18.7.2007, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 18.7.2007

Репутация: нет
Всего: нет



А как можно посмотреть время создания сессии (тоесть необходимо запомнить время когда пользователь зашел на сайт и помнить до того момента, пока он его не закроет)?
PM MAIL   Вверх
Golda
Дата 18.7.2007, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 26.3.2007
Где: Ариель, Израиль

Репутация: 20
Всего: 42



Запоминайте его в самой сессии.

Добавлено через 1 минуту и 12 секунд
Код

...
session_start();
if (!isset($_SESSION['start_time'])) {
 $_SESSION['start_time'] = time();
}
...



--------------------
"For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics
PM MAIL   Вверх
Glory
Дата 18.7.2007, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 18.7.2007

Репутация: нет
Всего: нет



Большое спасибо, работает!
PM MAIL   Вверх
Glory
Дата 18.7.2007, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 18.7.2007

Репутация: нет
Всего: нет



можно еще вопрос по этой теме?
пользователь может выбрать на сайте город и этот город должен сохраняться при перемещении пользователя по сайту и еще пару недель после этого (без регистрации).  как мне сохранить этот параметр в куки, а потом его оттуда доставать?
PM MAIL   Вверх
Golda
Дата 18.7.2007, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 26.3.2007
Где: Ариель, Израиль

Репутация: 20
Всего: 42



До этого обсуждались не собственно куки, а сессии. Сессии, конечно, чаще всего хранят идентификатор в куках (хотя и необязательно), но сами целевые данные заданной сессии хранятся на сервере (на этом безопасность сессий и основана). 

Сами сессии как правило используются для хранения информации о пользователе в течении одного сеанса его работы с броузером и удаляются после того, как пользователь закрыл броузер (обячно не сразу, но принципиально это ничего не меняет). Есть возможность изменить время хранения сессии через настройки php.ini (session.gc_maxlifetime и session.cookie_lifetime). Правда, я никогда не пробовала задать максимальное время жизни сессии в 2 недели.

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

Код

setcookie('country', $val, time() + 24 * 14 * 3600);


Вопрос, что Вам на самом деле нужно, куки или сессия в данном случае. Если все, что нужно знать о пользователе, пока он ходит по сайту, - это выбранный город и безопасность не пострадает, если пользователь подменит информацию в куках и пришлет Вам не то, что Вы ставили, можно вообще не завязываться с сессией, а просто ставить куки. Если нужно хранить разные данные и важно, чтобы пользователь не смог их подменить или просто принципиально, чтобы скрипт корректно работал и для броузера, в котором отключены куки, храните все в сессии. Ее идентификатор можно передавать и через GET или POST (правда, не представляю себе ситуации, когда для всех страниц сайта удобно передавать данные пользователя через POST). Если часть данных должна храниться только пока открыт броузер, а другая, некритичная к подмене, - гораздо дольше, используйте смешанный вариант

Это сообщение отредактировал(а) Golda - 18.7.2007, 17:10


--------------------
"For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics
PM MAIL   Вверх
Glory
Дата 31.7.2007, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 18.7.2007

Репутация: нет
Всего: нет



Большое спасибо за детальное объяснение. Реализация была немного отложилась, но сегодня заняла не более часа (вместе с поиском, привязаным к городу). Я выбрал запись в куки, так как запоминается только город. Все остальные параметры только для зарегистрированных пользователей - их записываю в базу. Еще раз спасибо, так как до этого как-то даже не задумывался о разнице между куками и сессией (хотя до этого я их и не использовал).
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0626 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.