Вопрос по сессиям в PHP

X
На сайте с 25.01.2008
Offline
79
736

Собственно вопрос заключается в следующем: есть два сайта site.ru и sub.site.ru, каким образом сделать чтобы информация о том что пользователь залогинился была доступна на обоих сайтах? Думаю что это как-то делается с помощью сессий.

topy
На сайте с 28.03.2006
Offline
142
#1
Xedos:
Думаю что это как-то делается с помощью сессий.

Читайте тут или смотрите в сторону cookies

Новости коротко и ясно (https://subnews.ru)
Unabashed
На сайте с 17.11.2006
Offline
70
#2

Xedos, простейший вариант - setcookie("<имя_куки>",<значение>,<время>);

пример использования: setcookie("last_logon",$last_logon,time()+7200) - устанавливает на машину пользователя печеньку (cookie) с именем last_logon, записывает в нее значение переменной $last_logon, кука живет 7200мс от момента установки (2 часа). Если нужно удалить куку с компьютера, то устанавливаете ей время жизни, меньшее, чем сейчас - например, для нашего случая, вызываем setcookie("last_logon",$last_logon,time()-1). Дешево и сердито :) Подробнее и правильнее можно погуглить.

Добавлено: Господин минусолог! Если это "дешево и не по делу" - напишите свой вариант. А если работа функции Вас не ясна - учите матчасть! Убивают уе*ки-анонимы. Уроки-то хоть все выучили на завтра?

КМ
На сайте с 08.03.2007
Offline
66
#3

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

N
На сайте с 15.08.2007
Offline
5
#4

На самом деле родная сессия PHP основывается на тех же самых cookies: у клиента в cookie хранится идентификатор сессии. А вся информация, связанная с ID, лежит на сервере. PHP позволяет задавать параметры установки "печенюшки" через функцию session_set_cookie_param. Там указан список аргументов, которые управляют ими. Среди них есть и домен ;) :

$domain = '.mydomain.com'; 

session_set_cookie_params(7200, '/', $domain);
session_start();

На всякий случай поясню, что 7200 - это количество времени в секундах, после которого Cookie считается протухшей, а '/' - путь, для которого она будет действовать. С доменом всё понятно, надеюсь :).

КиллерМЕН:PHP предоставляет возможность переопределить обработчики сессии с помощью функции session_set_save_handler. Там же есть пример, который, впрочем, реализует ту же схему, что работает по дефолту. Но в комментариях есть и готовые решения по хранению сессий в базе. Например, вот этот.

[Удален]
#5

Идентификатор сессии по умолчанию браузером распихивается туда, где он будет работать: если отключены кукисы, то в хвост всех ссылок гет-параметром и во все формы как дополнительное хидден-поле, так что ломать голову "что делать, если у юзера отключены кукисы" не стоит: отключены, значит спецаильно потрудился, чтобы сессия не работала никак, либо сидит по телнету.

X
На сайте с 25.01.2008
Offline
79
#6
nopox:
На самом деле родная сессия PHP основывается на тех же самых cookies: у клиента в cookie хранится идентификатор сессии. А вся информация, связанная с ID, лежит на сервере. PHP позволяет задавать параметры установки "печенюшки" через функцию session_set_cookie_param. Там указан список аргументов, которые управляют ими. Среди них есть и домен :
PHP код:
$domain = '.mydomain.com';
session_set_cookie_params(7200, '/', $domain);
session_start();

nopox, спасибо, это как раз то что мне надо.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий