如何将信息发送到同一ip下的两台电脑
我正在尝试使用PHP制作购物车系统。我的购物车系统允许用户将产品添加到购物车并将其保存在那里,而无需简单通过参考用户IP来登录(作为访客)。你们中有些人已经知道这是怎么回事。如何将信息发送到同一ip下的两台电脑
现在让我们考虑两个不同的人在同一个网络(使用相同的IP)在两台不同的计算机上连接并尝试访问我的购物车系统。第一个人将产品加入购物车,并考虑是否过夜。
当第一个人在思考过夜时,第二个人连接到另一台计算机(在同一网络下),并将一个物品添加到购物车。第二个人意识到他/她没有添加购物车中的额外物品。
我试图通过获取外部IP然后使用本地IP来分隔计算机来分离它,但这似乎是愚蠢的,因为如果它不托管在本地服务器上,就不能使用本地IP。
我不希望顾客在使用购物车之前登录。许多电子商务网站已经想出了一种方法,允许客户在同一网络下的多台电脑上更新购物车,而不会有任何电脑干扰彼此的结果(购物车中显示的项目)。
由于您提到的原因,您不应该通过IP地址识别个人 - 多个用户可以在同一个网络上。而应使用sessions或cookies来存储此信息。由于您希望将这些信息存储在用户关闭浏览器窗口时的位置,因此应该使用cookie,因为它们更持久。
如何购物车的详细信息存储在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
}
?>
另外,如果你想每个项目存储在一个单独的cookie,你也可以做这样的:
<?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;
}
?>
关于cookies重要提示:您可以不访问一个cookie在你设定的同时;您必须在两者之间重新加载页面。
一个重要的附录:不仅多个用户经常共享相同的IP,而且单个用户的IP有时会改变。这对移动设备特别常见。 – duskwuff
永远不要使用ip来识别用户!改用cookie。
Afaik其他网站为此使用会话 – bish