0

PHPを使ってカートシステムを作ろうとしています。マイ カート システムでは、ユーザーが (ゲストとして) ログインしなくても、ユーザー IP を参照するだけで、商品をカートに追加してそこに保存できます。これがどこに向かっているのかをすでに知っている人もいます。

ここで、2 人の異なる人が同じネットワークから (同じ IP を使用して) 2 つの異なるコンピューターに接続し、私のカート システムにアクセスしようとしたとします。最初の人は商品をカートに追加し、一晩でそれを手に入れるかどうかを考えます。

1 人目が一晩中考えている間に、2 人目が (同じネットワーク内の) 別のコンピューターに接続し、カートにアイテムを追加します。2 番目の人は、自分が追加していない余分なアイテムがカートにあることに気付きます。

外部IPを取得してからローカルIPを使用してコンピューターを分離することで分離しようとしましたが、ローカルサーバーでホストされていない場合はローカルIPを使用できないため、それはばかげているように見えました。

カートを使用する前に顧客にログインさせたくありません。多くの e コマース サイトは、顧客が同じネットワーク内の複数のコンピューターからカートを更新できるようにする方法を考え出しました。どのコンピューターも相互の結果 (カートに表示されるアイテム) に干渉することはありません。

4

2 に答える 2

0

ユーザーの識別に ip を使用しないでください。代わりに Cookie を使用してください。

于 2015-08-15T05:24:30.580 に答える
0

あなたが言及したまさにその理由から、IPアドレスを介して個人を特定するべきではありません.複数のユーザーが同じネットワーク上にいる可能性があります. 代わりに、セッションまたはCookieを使用してこの情報を保存してください。ユーザーがブラウザ ウィンドウを閉じた後もこの情報を保存する必要があるため、より永続的な 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;
}
?>

Cookie に関する重要な注意事項: Cookie を設定しているときに、同時に Cookie にアクセスすることはできません。間にページをリロードする必要があります。

于 2015-08-15T05:20:46.660 に答える