Помогите, пожалуйста, с идентификатором пользователя

1 234
totamon
На сайте с 12.05.2007
Offline
437
#21
Sanchila77:
Проблема в том, часть из них по ходу заходит с отключенными куками, а это ценные пользователи.

давно уже не видел чтобы кто-то ходил с отключенными куками... только плохие боты кук не пишут)

Sanchila77:
Пользователь заходит, положил товар в корзину, а затем при дальнейшем перемещении по сайту содержимое корзины теряется.

корзина пропадает, а вы ее пишите куда то? или он вся в куках хранится? значит или не правильно пишете, или не правильно куки ставите)

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

Домены и хостинг https://8fn.ru/regru | Дедик от 3000р https://8fn.ru/73 | VPS в Москве https://8fn.ru/72 | Лучшие ВПС, ТП огонь, все страны! https://8fn.ru/inferno | ХОСТИНГ №1 РОССИИ https://8fn.ru/beget
K
На сайте с 03.06.2015
Offline
45
#22
Sanchila77:
Глупость. В скрипте пользователя можно перенаправить этот же скрипт с установкой куки, а в GET отправлять параметр, что куки уже проставлены. И дальше в коде проверить, установилась ли она, ТА САМАЯ КУКА. И это будет в рамках одного скрипта. Вот такая вот мякотка...

По схеме в цитате. Записываем в куку cid=123 и сразу делаем редирект с дополнительным параметром в строке поиска, скажем &cid=123. В следующей сессии видим этот параметр, а в куках - х нанэ. Вуаля! Мы узнали что куки у юзера отключены. А зачем нам гет и перезагрузка? Мы запросто можем написать скрипт на жабе, который пошлет результат чтения куки cid, и если в ней пусто - значит куки отключены. То есть все работает, да?

Нет. Если я нажму ссылку с &cid=123 и зайду на сайт где еще не был, то получится что у меня куки выключены. Потому что в них еще нет cid=123. Теперь придумайте как передать уникальный код, типа хэша, через этот cid, то есть через урл. Тогда продолжим.

Проблема не в том, чтобы определить включены они или отключены, а в том что делать, если они отключены.

Ничего не делать. Если юзер отключил куки, значит он не хочет чтоб ему их писали и все. Следовательно ничего он покупать не собирается, поскольку там еще и ФИО надо вписывать и телефон и может быть адрес чтобы оформить.

Нет куков - нет сделок.

Или переходите на передачу SESSID через урл. Так раньше и делали.

MYSQL PHP JS HTML CSS SEO TXT США СССР
K
На сайте с 03.06.2015
Offline
45
#23

И вообще, все эти редиректы и прочая тряхомудия в условиях отключенных кук не имеют значения. Ну узнали вы, дальше что? В урлах что ли будете передавать корзину? В базу писать? Да нафиг надо. Чел отключил себя - ну и х с ним.

Sanchila77
На сайте с 23.05.2011
Offline
66
#24
totamon:
давно уже не видел чтобы кто-то ходил с отключенными куками... только плохие боты кук не пишут)

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

svv, почитал некоторые статьи на эту тему и утешить вас нечем. Насколько я понимаю, есть один некрасивый вариант. В современных версиях пхп сессии работают при помощи кук. Они пишут нечто вроде Set-Cookie: PHPSESSID=здесь какой-то идентификатор. При отключенных куках это не работает. В устаревших версиях пхп идентификатор сессии передавался урлом в GET - типа ?PHPSESSID=идентификатор. Потом от этого отказались из-за проблем с безопасностью (GET легко перехватить и просто зайти с этим параметром как другой пользователь). Но эту возможность можно включить на время выполнения скрипта при помощи ini_set('session.use_trans_sid', true); И тогда просто хранить корзину в $_SESSION.

Но все это сработает только пока юзверь не закрыл браузер. Проблему опознавания их в течение месяца это все равно не решает. То есть, если они что-то покидали в корзину, ушли, а через неделю пришли, то все кидают по новой и никак больше.

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

Суровый модератор не разрешил мне показывать вам эту подпись :-)
K
На сайте с 03.06.2015
Offline
45
#25
Sanchila77:
GET легко перехватить и просто зайти с этим параметром как другой пользователь

Не так. Если юзер дал ссылку с хэшем сессии и не закрыл браузер, то любой кто ее щелкнет получит доступ к данным того юзера. Поэтому форумные и прочие скрипты по умолчанию резали хэш, а кое-где не резали. Щелкаешь по такой старой ссылке, а тебе говорят что твоя сессия сдохла, досвидос. Грамотные вручную выкашивали ключ и вперде.

---------- Добавлено 21.08.2015 в 23:01 ----------

Sanchila77:
что эти юзвери с ios вообще не знают, что такое куки

Вряд ли, но если и так, то хрен с ними. Зачем такие калечные нужны в магазине.

SocFishing
На сайте с 26.09.2013
Offline
118
#26
svv:
if(!$_COOKIE["MID"]){
$value = time().$_SERVER['REMOTE_ADDR'];
setcookie("MID", $value, time()+604800);
}(

Проблема у вас скорее всего в setcookie("MID", $value, time()+604800, "/");

нужно проставить path

В добавок if (!isset($_COOKIE["MID"])) {

На маках все должно быть нормально! ☝

★Сервис идентифицирует (https://socfishing.com/?utm_source=searchengines) посетителей вашего сайта и предоставляет их профили ВКонтакте, Телефон, Почта! Цены копеечные, работаем 8 лет.
AP
На сайте с 12.06.2015
Offline
75
#27

Храните все данные на сервере! Все! Не храните никаких данных у пользователя.

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

А хранить корзину пользователя в куках - это моветон. Так делают только плохие сайты. Получается, если я набиваю корзину товарами, но не сформировал покупку, мне придется на другом компьютере снова забивать все заново, вместо того, чтобы просто ввести логин-пароль и увидеть свою корзину из любого места.

P.S. В комусе, к примеру, реализована правильная корзина - можно с разных компьютеров сразу видеть одну корзину.

S
На сайте с 04.02.2007
Offline
318
svv
#28
A007MP:
Храните все данные на сервере!

В куках прописываете только уникальный идентификатор пользователя.

В куках пишем только уникальный идентификатор - остальное храним на сервере месяц.

Sanchila77
На сайте с 23.05.2011
Offline
66
#29
SocFishing:
Проблема у вас скорее всего в setcookie("MID", $value, time()+604800, "/");
нужно проставить path

А это мысль. В документации сказано, что по умолчанию ф-я ставит куку для текущей директории и она потом доступна для нее и ее поддиректорий. Действительно, имеет смысл попробовать поставить для корня сайта.

S
На сайте с 04.02.2007
Offline
318
svv
#30
Sanchila77:
А это мысль. В документации сказано, что по умолчанию ф-я ставит куку для текущей директории и она потом доступна для нее и ее поддиректорий. Действительно, имеет смысл попробовать поставить для корня сайта.

Поставил, не помогло.

Но, оказывается, только часть яблоководов не принимают куку - около половины вполне себе нормально её воспринимают.

Заодно выявил одного товарища из Пушкино.

У него на 8 переходов 8 разных IP из одной подсети, но самое интересное, что и USER_AGENT каждый раз разный :)

Уж не хитрый ли бот это какой?

1 234

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