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

123 4
Sanchila77
На сайте с 23.05.2011
Offline
66
#11

в файрфоксе не знаю как посмотреть.

Заходите хромом. При этом открывайте панель F12 -> Resources -> и в куках слева выбирайте домен. Там ищите пишет ли он эту переменную. Там же дата истечения будет и размер.

Сейчас пока в принципе посмотреть, отрабатывает ли скрипт.

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

Никакие id юзеру без регистрации не нужны. Там все устроено просто. Когда браузер делает запрос, он посылает серверу куки, так типа принято делать. Вы берете эти куки и смотрите что там есть. Допустим ничего нет, юзер зашел впервые. Тогда все его опции - по умолчанию. Юзер совершил на странице поступок - вы записываете последствия в куки. Если страница пезагружается или юзер уходит на другую - все в точности повторяется, но теперь данные юзера уже есть - они же записались в прошлый раз. На этом все.

Что еще тут можно изобрести такое, чтоб оно еще и не работало?

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

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

Короче, вы не понимаете этой системы, она не такая как вы поняли.

---------- Добавлено 20.08.2015 в 14:24 ----------

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

---------- Добавлено 20.08.2015 в 14:29 ----------

svv:
и снова по несколько записей в некоторые IP

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

Название куков служит для сегрегации данных. Например $_COOKIE['cart'] - это кука талеги (корзины), или там $_COOKIE['sort'] - это мы запомнили порядок сортировки каталога который юзер выбрал. Или $_COOKIE['color'] - какой-нибудь цвет и так далее.

Само собой вы можете писать все в одну-единственную куку если места хватит, она 4096 байт всего. Ну то есть кодируете, скажем в json и пишите сразу несколько параметров.

---------- Добавлено 20.08.2015 в 14:32 ----------

Работать с куками директом это отстой. Все юзают объекты и на сервере и на браузере. Во-первых так удобнее и эффективнее, во-вторых вы легко можете поменять внутри объекта место хранения данных, с куков скажем на localStorage, на серверную бд или еще какие-то и все как работало, так и будет работать снаружи объекта.

Объект куков или генерально персональных данных незарегистрированного юзера устраивает вам интерфейс к этим данным.

---------- Добавлено 20.08.2015 в 14:45 ----------

Самая мякотка что для корзины не нужны серверные куки. Корзина это чисто локальная фича. Юзер добавил товар в корзину? Это значит браузер записал в файл 189:1 - идентификатор товара и количество. Еще добавил - еще такая парочка записалась. Удалил - удалилась нужная по id. Чтобы развернуть корзину жаба-скрипт почитав что пишут в куках отгружает серверу json - сервер ему в ответ валит html, все просто.

Я об этом вспомнил когда посмотрел свой класс юзера, который одновременно и класс куков и думаю, а где же тут название корзины, а, точно, на сервере она не нужна.

---------- Добавлено 20.08.2015 в 14:50 ----------

Вот такая запись заказа у юзера в куке

{"123":{"am":1,"ap":37070},"126":{"am":1,"ap":30600},"186":{"am":4,"ap":6920}}

число - id товара, am - amount, ap - actual price на случай споров, снапшут цены. Когда заказ оформлен он как есть валится в бд. Для этого поля написан класс который рендерит такую запись понятно для человека.

MYSQL PHP JS HTML CSS SEO TXT США СССР
siv1987
На сайте с 02.04.2009
Offline
427
#13
svv:
и снова по несколько записей в некоторые IP

Разные пользователи могут иметь один и тот же адрес.

Кука действительна только для этого браузера.

K
На сайте с 03.06.2015
Offline
45
#14

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


public function save($name,$value,$expiry='+30 days',$path='/') {

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

if(strpos($_SERVER['HTTP_HOST'],'.')!==false)
$domain='.'.$_SERVER['HTTP_HOST'];
else
$domain=null;

if(is_string($expiry))
$expiry=strtotime($expiry);
else
$expiry=86400*365+time();

if(is_array($value))
$value=json_encode($value);

setcookie($name,$value,$expiry,$path,$domain);
$_COOKIE[$name]=$value;
$this->_c[$name]=compact('path','domain');
}
Sanchila77
На сайте с 23.05.2011
Offline
66
#15
kostyanet:
Вряд ли он из семейной сети тестит бегая между компом, планшетом и телефоном, скорее всего где-то смешной косяк и все.

А причем здесь семейная сеть? Те адреса в глобальной сети вообще не видны. У любого провайдера есть пул ip адресов (так называемых белых). Они выдаются юзверям, когда они выходят в Сеть. Схемы выдачи могут быть разные. В описанном случае может быть такой вариант: юзверь зашел на сайт, у провайдера к примеру ребутнули vpn, а повторно юзверь уже выходит в сеть под другим ip (старый может уже кто-то другой получил). Вот вам и два разных ip.

Конечно, по ip идентифицировать и подцеплять пользовательские данные никак не катит. Только из куки браузера. Как их записать ТС разобрался. Проблема в том, часть из них по ходу заходит с отключенными куками, а это ценные пользователи. И вот как-то их нужно обрабатывать. Кто-нибудь в курсе, если куки отключены, функционал сессий будет работать или он тоже ёк?

K
На сайте с 03.06.2015
Offline
45
#16

Вы о чем вообще? Была реплика что разные юзеры могут иметь один IP, а всех юзеров свой браузер. Естественно они все запишут ему в общий файл свои одинаковые IP. Но это надо их гонят по хате - ну-ко протестируй, и ты, и ты... А я? И ты тоже!

Вообще не имеет все это смысла, но надо видимо разжевать. У меня 4 иногда 5 устройств с которых можно выйти через один модем в сеть. Значит у всех у нас будет одинаковый IP. Но у каждого будут свои личные куки, потому что кука это печенька, которую браузер выдает юзеру за то, что он зашел на сайт. Другой браузер выдает свою печеньку. Если теперь на сервере проверять айпи юзеров и писать все в общий файл, то вся моя семья зайдя к нему оставит 4 одинаковых записи. Пока что больше на нарожал. А так-то хоть сотню запишет.

Поэтому ойпи тут не стучит, никак и никаких ид не нужно - кука сама собой идентификатор.

Sanchila77
На сайте с 23.05.2011
Offline
66
#17
kostyanet:
Вы о чем вообще? Была реплика что разные юзеры могут иметь один IP, а всех юзеров свой браузер. Естественно они все запишут ему в общий файл свои одинаковые IP. Но это надо их гонят по хате - ну-ко протестируй, и ты, и ты... А я? И ты тоже!

Да не в этом дело. Никто ничего не тестирует. Пользователь заходит, положил товар в корзину, а затем при дальнейшем перемещении по сайту содержимое корзины теряется.

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

K
На сайте с 03.06.2015
Offline
45
#18

Этот форум пишет вам и мне 15 кукишей. Среди которых есть uid. Можно подумать оно - ид юзера. Так эта ид от счета юзера, от базы данных в которой он записан. А не от самой куки.

---------- Добавлено 20.08.2015 в 21:53 ----------

Sanchila77:
ужно подхватывать корзину пользователя вне зависимости от того, включены у него куки или нет.

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

Если куки отключены вы НИКОГДА не узнаете юзера по ним. Куков просто не будет и сессия не будет работать, ибо она через куку PHPSESSID работает.

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

---------- Добавлено 20.08.2015 в 21:55 ----------

Данные можно передавать через урл и эту сессид так же. Допотопная технология. Никто сейчас куки не отключает вручную, они отключаются если запустить приватную сессию. Какой дурак вообще приватные сессии запускает? Нет таких дураков, все умные :)

---------- Добавлено 20.08.2015 в 21:57 ----------

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

---------- Добавлено 20.08.2015 в 22:01 ----------

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

---------- Добавлено 20.08.2015 в 22:22 ----------

Посмотрел наивные коды на первой странице, думаю надо дать совет определять все параметры явно кроме secure и httponly, потому что дефолтовый path может меняться и вообще как потом удалить куку, если не знаешь пути и домена?

Sanchila77
На сайте с 23.05.2011
Offline
66
#19
kostyanet:

Если куки отключены вы НИКОГДА не узнаете юзера по ним. Куков просто не будет и сессия не будет работать, ибо она через куку PHPSESSID работает.

Вот это меня и интересовало. Но ведь должны быть способы идентификации в этом случае.

kostyanet:

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

Откуда вы знаете, что для меня, а что нет? Мы с вами даже не знакомы.

kostyanet:

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

Глупость. В скрипте пользователя можно перенаправить этот же скрипт с установкой куки, а в GET отправлять параметр, что куки уже проставлены. И дальше в коде проверить, установилась ли она, ТА САМАЯ КУКА. И это будет в рамках одного скрипта. Вот такая вот мякотка...

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

kostyanet:

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

Я пишу в топике, поскольку выход из данной ситуации мне интересен и пригодится в дальнейшем. А вот ваши советы все что-то купить и заказать вызывают вопросы. По делу толком ничего, только купите, да закажите. Не у вас случаем заказать то?

S
На сайте с 04.02.2007
Offline
318
svv
#20

В общем - выводы пока печальные.

Куку не видят:

а) боты - так и должно быть

б) пользователи APPLE (у всех в HTTP_USER_AGENT присутствует AppleWebKit)

в) пользователи, у которых HTTP_USER_AGENT = "Ruby". Кто это вообще?

Вот и встает вопрос, как кормить куку яблоководам?

PS пока есть утверждение, что некоторые яблоководы не кушают куку, но нет ответа - все ли яблоководы не кушают куку.

PSS. kostyanet, Вы либо помогите, либо не мешайте. Чего ради хаять человека, который отозвался? Не все родились с нужными знаниями. Не всем в работе нужны все знания. Мне эти куки нужно настроить один раз и забыть. Уже десять лет цепляюсь к IP и ничего. Понимаю, что не правильно, вот и ищу пути решения.

123 4

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