Объясните тупому про sessions

12
Aisamiery
На сайте с 12.04.2015
Offline
293
#11
Kaavain #:
Это я тоже понимаю. Вопрос в том - можно ли ДО  session_start(); понять что сессия данного посетителя существует?

Можно, у вас в куках лежит идентификатор сессии, если его прислали то сессия ранее была. Только вам надо решить при каких условиях добавлять в куки иначе сессия для новых пользователей не стартанет никогда

Kaavain #:
У меня время жизни корзины - год. Возврат к корзине через месяц - не редкость. Иногда возвращаются даже больше, чем через год. Правда такие случаи исчезающие редки. 

Надо чтоб много звезд сошлось вместе, обычно сессии на пару дней более чем достаточно, за год куки с сессий пользователь из браузера сам почистит не единожды. Лучше придумать какой то другой механизм работы с брошенными корзинами

Разработка проектов на Symfony, Laravel, 1C-Bitrix, UMI.CMS, OctoberCMS
E
На сайте с 01.10.2017
Offline
94
#12
Kaavain #:
Вопрос в том - можно ли ДО  session_start(); понять что сессия данного посетителя существует?

Обычно просто проверяют существование сессионной куки, чтобы понять, затрагивал ли клиента данный механизм.

Значение куки связано с именем сессионного файла, но я бы не стал на это полагаться.

Kaavain :
хочу чтобы у реального юзера не запускался процесс  ini_set('session.save_path', $path);
Вы слишком много внимания уделяете session.save_path 😉
Домены на продажу: https://p20.ru/collection/domains-for-sale
Kaavain
На сайте с 28.07.2015
Offline
134
#13
Aisamiery #:

Можно, у вас в куках лежит идентификатор сессии, если его прислали то сессия ранее была. Только вам надо решить при каких условиях добавлять в куки иначе сессия для новых пользователей не стартанет никогда

Надо чтоб много звезд сошлось вместе, обычно сессии на пару дней более чем достаточно, за год куки с сессий пользователь из браузера сам почистит не единожды. Лучше придумать какой то другой механизм работы с брошенными корзинами

Они не брошены. Люди думают по неделе-две-месяц и это нормально. 

Могу порекомендовать только хостинг: https://traf.at/vps - за 3 года все на 4++ и цены не подняли. Ну и банк для белых ИП: https://traf.at/bankm
Kaavain
На сайте с 28.07.2015
Offline
134
#14
estic #:

Обычно просто проверяют существование сессионной куки, чтобы понять, затрагивал ли клиента данный механизм.

Значение куки связано с именем сессионного файла, но я бы не стал на это полагаться.

Вы слишком много внимания уделяете session.save_path 😉

У меня так работает - сессии сайтов по своим папкам, сессии ботов - в помоечную. Иначе арт хранении всех в дефолтной год - распухает донельзя, никаких дисков не хватит. Можно конечно на уровне ОС выбирать те, что с ботовскими признаками и удалять…. Только что пришла в голову эта мысль….

Kaavain
На сайте с 28.07.2015
Offline
134
#15

Короче сделал так и все вроде работает, старые сессии не пропали...

$path = $_SERVER['DOCUMENT_ROOT'].'/sessions/'.$_SERVER['HTTP_HOST'];
if (!$_COOKIE['spath']) {
        if (isset($_SERVER['HTTP_USER_AGENT'])) {
                if (!is_bool(stripos($_SERVER['HTTP_USER_AGENT'], 'bot')) ||
                    !is_bool(stripos($_SERVER['HTTP_USER_AGENT'], 'spider')) ||
                    !is_bool(stripos($_SERVER['HTTP_USER_AGENT'], 'Slurp')) ||
                    !is_bool(stripos($_SERVER['HTTP_USER_AGENT'], 'crawler')) ||
                    !is_bool(stripos($_SERVER['HTTP_USER_AGENT'], 'Uptime')) ||
                    !is_bool(stripos($_SERVER['HTTP_USER_AGENT'], 'facebook')) ||
                    !is_dir($path)) {
                        $path = $_SERVER['DOCUMENT_ROOT'].'/sessions/bots';
                }
        }
}
ini_set('session.save_path', $path);
setcookie('spath', '1', time() + (1 * 365 * 24 * 60 * 60), '/');

Но и тут без тупости не обошлось... Часа два бился бошкой почему время жизни куки в РНР установлено на максимум 32-битный, а собака куки смотрю в Эдже- смерть планируется на год+чутьчть! Ломал голову где у меня эта настройка зашира, и тут меня подвел кривой калькулятор онлайн "секунды между датами", который считал неверно. Случайно его закрыл и открыл другой - он насчитал ровно 400 дней, о, умаю, вот уже теплее... И точно! Оказыцца с 2023 (свежак!) года все хромные браузеры не дают установить жизнь куки более 400 дней! Победа.

12

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