2015-08-15 2 views
0

Я пытаюсь сделать систему корзины с помощью PHP. Моя система корзин позволяет пользователям добавлять товары в свою корзину и сохранять их там без необходимости входа в систему (как гость), просто обратившись к IP-адресу пользователя. Некоторые из вас уже знают, где это происходит.Как отделить информацию, отправленную на два компьютера под тем же самым ip

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

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

Я попытался отделить его, получив внешний ip, а затем используя локальный ip для разделения компьютеров, но это показалось вам глупым, потому что вы не можете использовать локальный IP-адрес, если он не размещен на локальном сервере.

Я не хочу, чтобы клиенты входили в систему перед использованием тележки. Многие сайты электронной торговли выяснили, как разрешить клиентам обновлять тележку с нескольких компьютеров в одной сети без каких-либо компьютеров, мешающих результатам друг друга (отображаемые элементы в корзине).

+2

Afaik Другие сайты используют сеансы для этого – bish

ответ

0

Вы не должны идентифицировать людей по IP-адресу вообще по той причине, о которой вы говорили - несколько пользователей могут находиться в одной сети. Вместо этого используйте sessions или cookies, чтобы сохранить эту информацию. Поскольку вы хотите сохранить эту информацию до того момента, когда пользователь закроет окно своего браузера, вы должны использовать файлы cookie, поскольку они более устойчивы.

Пример того, как хранить детали корзины в печенье может выглядеть примерно так:

<?php 
setcookie("cart", "item, another item, yet another item", time()+3600*24*365*10, '/'); 
?> 

Затем вы можете использовать explode, чтобы получить все детали.

<?php 
foreach (explode(",", $_COOKIE['cart']) as $item) { 
    echo trim($item); // Will output each item in the cookie cart 
} 
?> 

В качестве альтернативы, если вы хотите сохранить каждый элемент в отдельном печенье, вы также можете сделать это следующим образом:

<?php 
// It doesn't matter what you name the cookies in this case as you will be looping through all of them, you just need a unique string 
setcookie("item 1", "item name 1", time()+3600*24*365*10, '/'); 
setcookie("item 2", "item name 2", time()+3600*24*365*10, '/'); 
setcookie("item 3", "item name 3", time()+3600*24*365*10, '/'); 
// Need page reload to access cookies 
foreach ($_COOKIE as $item) { 
    echo $item; 
} 
?> 

Важное замечание о печенье: Вы можете не доступа cookie в то же самое время, когда вы его устанавливаете; у вас должна быть перезагрузка страницы между ними.

+1

Важное дополнение: не только несколько пользователей часто используют один и тот же IP-адрес, но IP-адрес одного пользователя иногда будет меняться. Это особенно характерно для мобильных устройств. – duskwuff

-1

Никогда не используйте ip для идентификации пользователя! Вместо этого используйте cookie.