Kaavain

Kaavain
Рейтинг
178
Регистрация
28.07.2015
Aisamiery #:

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

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

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

vitaliy11 #:

)

Интересно что за магазин, где пользователи возвращаются к корзине через некоторое время.

Мне когда-то также не хотелось переделывать свои несколько сайтов с php 5 на следующую версию, так как нужно было изменить и доступ к базе данных и некоторые модули не работали. Но просто сел и переделал по правильному. Может и Вам переделать на нормальную логику, как писали выше?

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

Так, сам острю - сам смеюсь. У меня всегда так - пока тут (или не тут, но тут позориться не так страшно) пишу, приходит в голову такая редкость, как умная мысль...

1. При каждом хите идет обращение к index.php и это всегда как в первый раз, тут ниче не попишешь, Апач или Нгинкс (уж не знаю кто) не может знать прошлого... 

2. Соответственно при каждом хите session.save_path дефолтный, а именно /var/www/user/data/tmp если панель ISPmanager (всеми силами стараюсь слезть с этой иглы) или FastPanel (отличная штука). И без ini_set('session.save_path', $path); ничего не поделать.

3. Чтобы избежать при каждом хите if (юзерагент?){$path} + ini_set('session.save_path', $path);  что я и хочу - юзать (неправильно мною используемые) сессии нельзя, так как массив $_SESSION[] пуст до session_start();  , а чтение из файла получается сложно и медленно.

4. Рабочий вариант должен быть такой: писать в куки скажем либо безликое $sesspath = 1(2,3,4,...) получаемое при первом хите и при всех хитах читать его и if(!$sesspath) { if (юзерагент?){$path} + ini_set('session.save_path', $path); } либо писать туда сразу весь  $path но мне кажется это не принято, так как в юзера в куках будет уже не безликая информация, а конкретика.

5. П.4 не должен сбоить, ибо если умерла кука у юзера, то и корзина обнулилась и вообще шефвсепропало.

6. Бонусная игра: а может вообще еще и  session_start();  заменить на if(! $_SESSION[]){ session_start(); } раз пошла такая пьянь??? UPD: не имеет смысла, так как повторный вызов ничего не делает, а варнинги у меня отключены.

Скажите мне, я мегахакер или опять что не понял?

По существу - явно пилит бэкапы. Пройтись в консоли поиском файлов более 1мб и временем создания нужным. 

Бэкапы могут под рутом делаться, а настройки - под рядовым смотришь 

Но на Hestia все равно перейти!
1. Перейти на Hestia, это очень просто, ибо форк. Но в отличие от Весты - живой. 
2. Наблюдать, скорее пройдет. 
Сергей :

Думаю, не стоит останавливаться на том моменте, что я человек? Однако Яндекс упорно считает меня ботом. 

….

Небольшой эксперимент: Попросил жену, у нее результаты - с 6 попытки прошла. Даю дочке, с 4-той. Тревожно стало. Но точно тогда проблема не во мне. 

Загадка пока не разгадана: почему мои подопечные, тоже не смогли пройти тест на "определение ботов" с первого раза? 

Как я вижу ситуацию, в пору составлять коллективный иск. Благо, юристов знакомых хватает и нарушении конституционных прав на лицо.

Если на этом форуме есть официальный представитель этой компании, я хочу чтобы вы передали это "ребятам" (или как вы называете своих сотрудников здесь),  следующую информацию. Как временный выход из сложившейся ситуации, хочу чтобы Яндекс называл меня и близких мне людей - людьми. Хочу чтобы и даже намека не было на то что я и близкие мне люди, это боты/роботы и т.п. Чтобы убрали со своих сайтов дискриминацию, а именно упоминание и унижение в адрес пользователей, что сервис  "определяет ботов и отсеивает их" пока это будет недоказанным фактом. 

Сейчас придет Владимир, и загадочно объяснит, что:

1. У нечеловеков дети тоже нечеловеки. 

2. Нечеловеки подсознательно ищут в жены и женятся тоже на нечеловеках. 

3. Раз яндекс говорит тебе (намекает), что ты нечеловек, то значит так оно и есть. 

Да глюк это был. Просто наложилось у кого-то на существующие проблемы. А у кого их не было - он сам прошел. 
Яндекс и глюки - это же одно и то же. 
webinfo #:
Не нужны сессии? Странное желание.

Не очень точно выразился:

webinfo #:
хочу чтобы у реального юзера не запускался процесс  ini_set('session.save_path', $path);

хочу чтобы у реального юзера не запускался процесс  ini_set('session.save_path', $path); ЕСЛИ ЭТО НЕ ПЕРВЫЙ ХИТ.

egranty #:
Вы просто используете сессии не по назначению

Да, я это понимаю. Но переделывать это очень сложно. Вот и леплю костыли.

egranty #:
Пока не запустите  session_start(); , массив $_SESSION[] не будет заполнен.

Это я тоже понимаю. Вопрос в том - можно ли ДО  session_start(); понять что сессия данного посетителя существует? Я бы делал эту проверку, и тогда бы обходил 

$path = $_SERVER['DOCUMENT_ROOT'].'/sessions/'.$_SERVER['HTTP_HOST'];
if (!is_dir($path)) {
        $path = $_SERVER['DOCUMENT_ROOT'].'/sessions/bots';
}
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'))) {
                $path = $_SERVER['DOCUMENT_ROOT'].'/sessions/bots';
        }
}
ini_set('session.save_path', $path);

при каждом хите...

Aisamiery #:

Хотелось бы понять ваш опус, но честно непонятно совсем.

session_start() -  создаёт сессию, либо возобновляет существующую, основываясь на идентификаторе сессии, переданном через GET- или POST-запрос, либо переданный через cookie (из документации)

до вызова session_start массив $_SESSION пуст. Вы можете стартовать сессию только по условию, условием будет ваше определение реального юзера (только не в массиве $_SESSION)

Массив в памяти. Но файл сессии-то есть. Я тоже понять не могу, согласен :-) , поэтому и прошу объяснить. 

Всего: 1296