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

123 4
S
На сайте с 04.02.2007
Offline
318
svv
1947

Коллеги, не получается для привязки к корзине сделать идентификатор, приходится привязываться к IP, что, мягко говоря, не корректно.

Подскажите, пож-ста, как на PHP присвоить конкретному пользователю идентификатор (сессию?), чтобы в течение месяца держалось в броузере и при запросе я мог выдать им информацию какие страницы посещали, чего в корзинку добавляли?

Sanchila77
На сайте с 23.05.2011
Offline
66
#1

svv, не совсем понятен вопрос. Если вам нужно запустить сессию, то session_start и далее кидаете в этот массив то, что нужно.

Но в вашем случае, мне думается, через куки лучше сделать.

setcookie('id', 'номер', time()+месяц в секундах);

Когда юзверь будет приходить назад, будете проверять $_COOKIE['id']. Там будет лежать id, который вы ему присвоили. А дальше уже подцепляете корзину и все, что угодно еще.

вот setcookie - http://php.net/manual/ru/function.setcookie.php

вот session_start- http://php.net/manual/ru/function.session-start.php

Суровый модератор не разрешил мне показывать вам эту подпись :-)
S
На сайте с 04.02.2007
Offline
318
svv
#2
Sanchila77:

Но в вашем случае, мне думается, через куки лучше сделать.
setcookie('id', 'номер', time()+месяц в секундах);
Когда юзверь будет приходить назад, будете проверять $_COOKIE['id']. Там будет лежать id, который вы ему присвоили. А дальше уже подцепляете корзину и все, что угодно еще.

вот setcookie - http://php.net/manual/ru/function.setcookie.php
вот session_start- http://php.net/manual/ru/function.session-start.php

Спасибо. Да, Setcookie.

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

Sanchila77
На сайте с 23.05.2011
Offline
66
#3
svv:

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

Ну дело в том, что вы извлекли и работаете с ней в рамках работы скрипта. Переходы, я так понимаю, это пользователь по сайту ходит? Значит он в какой-то момент приходит через точку входа, где id не извлекается. В идеале надо где-то в стартовом файле скинуть id в переменную и дальше уже подключаемые файлы будут с ней работать. Тут уже надо смотреть на каких страницах данные исчезают. У вас cms какая-то?

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

В конце концов можно извлечь id из кук, запустить сессию, сохранить в массив $_SESSION и работать с ним пока юзверь бродит по сайту, чтобы не обращаться в куки. Но, опять же, нужно проследить, чтобы на всех страницах, которые просматривает пользователь, стартовала сессия.

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

CMS - самописная.

загоняю фрагмент с куками в корневой файл - без него только картинки открываются.

-------------------------

Поместил в начальный файл такой фрагмент:

if(!$_COOKIE["MID"]){
$value = time().$_SERVER['REMOTE_ADDR'];
setcookie("MID", $value, time()+604800);
}

и записываю значения а файл (IP_ADRES.txt).

У некоторых уже по несколько записей :(

Пример с IP 95.108.158.244:


144005973095.108.158.244
144005976995.108.158.244
144005977395.108.158.244
144005977695.108.158.244

Где косяк? :(

Sanchila77
На сайте с 23.05.2011
Offline
66
#5

Зачем вы повторно пишете в куки. Вы просто проверяете


if($_COOKIE["MID"]){
$mid = $_COOKIE["MID"];
}else{
пользователь не идентифицирован и какие-то другие действия. Или можно ему здесь установить id в куки. Если он что-то кинет в корзину, то под этим id сохраните в базе его корзину до следующего визита.
}

Здесь уже далее работаете с $mid. К примеру, по нему ищете корзину в базе или еще что-то. А в файл вообще ничего писать не надо.

S
На сайте с 04.02.2007
Offline
318
svv
#6
Sanchila77:
Зачем вы повторно пишете в куки

так в куки пишу если MID отсутствует:

if(!$_COOKIE["MID"]){...}
Sanchila77:
в файл вообще ничего писать не надо.

В файл - это для себя. Как увижу, что в файлах по одной записи - значит работает :)

Sanchila77
На сайте с 23.05.2011
Offline
66
#7

Извиняюсь. Подправил. ! конечно надо убрать. Если есть id в куках, то ...

А само setcookie("MID", $value, time()+604800) по результатам визита пользователя у вас пишется?

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

Странно всё это :(

Вот фрагмент:



if($_COOKIE["MID"]){
$MID = $_COOKIE["MID"];
}
else{
$value = time()."-".$_SERVER['REMOTE_ADDR'];
setcookie("MID", $value, time()+604800);

$basers = fopen("$absolute_path/cookie/$mip.txt","a+");
fputs($basers,"$value\r\n");
fclose($basers);
}
$MID = $value;

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

Sanchila77
На сайте с 23.05.2011
Offline
66
#9

Надо посмотреть куки в браузер то пишутся вообще. Вы чем заходите?

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

Я файрфоксом - у меня пишутся

Ща гляну чем заходят юзеры, которым не пишет

123 4

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