购物车会话问题

时间:2018-08-13 06:04:33

标签: php jsp

如何为使用php登录的用户存储购物车会话。我注意到登录时向所有用户显示了相同的购物车信息,这是错误的。每个用户应根据自己可能添加的内容拥有不同的购物车信息。如何将购物车信息绑定到已登录的用户或每个用户。

添加到购物车php

if(isset($_GET['add'])){
 $query = query("SELECT * FROM product WHERE product_id=" . escape_string($_GET['add']). " ");
 confirm($query);
    while($row = fetch_array($query)){
        if($row['product_quantity'] !=$_SESSION['product_' . $_GET['add']]){
            $_SESSION['product_' . $_GET['add']]+=1;
             redirect("cart.php");
        } else {
            set_message("We have only" . $row['product_quantity'] . " " . "Available");
            redirect("cart.php");
        }
    }
}

在购物车中显示价值

$total = 0;
$item_quantity = 0;
foreach($_SESSION as $name =>$value){
    if($value > 0){
        if(substr($name, 0, 8) == "product_"){
            $lenght = strlen($name) - 8;
            $id = substr($name, 8 , $lenght);
            $query = query("SELECT * FROM product WHERE product_id = " . escape_string($id) . " ");
            confirm($query);
            while($row= fetch_array($query)){
                $sub = $row['product_price']*$value;
                $item_quantity +=$value;
                $product = <<<DELIMETER
<tr>
    <td class="col-xs-1">
        <img src="images/products/{$row['product_image']}" alt="" class="img-responsive">
    </td>
    <td class="col-xs-4 col-md-5">
        <h4>
            <a href="single-product.php">
                {$row['product_title']}
            </a>
            <small>
                M, Black, Esprit
            </small>
        </h4>
    </td>
    <td class="col-xs-2 text-center">
        <span>
            &#x20B9;{$row['product_price']}
        </span>
    </td>
    <td class="col-xs-2 col-md-1">
        <a href="carts.php?remove={$row['product_id']}" class='btn btn-primary'>
            <i class='fa fa-minus'></i>
        </a>
        <div class="form-group">
            <input type="text" class="form-control" value="{$value}">
        </div>
        <a href="carts.php?add={$row['product_id']}" class='btn btn-primary'>
            <i class='fa fa-plus'></i>
        </a>
    </td>
    <td class="col-xs-2 text-center">
        <span>
            <b>
                &#x20B9;{$sub}
            </b>
        </span>
    </td>
    <td class="col-xs-1 text-center">
        <a href="carts.php?delete={$row['product_id']}" class="btn btn-primary">
            <i class="fa fa-times"></i>
        </a>
    </td>
</tr>
                DELIMETER;
                echo $product;
            }
            $_SESSION['item_total'] = $total += $sub;
            $_SESSION['item_quantity'] = $item_quantity;           
        }
    }
}

我有用户会话$ _SESSION ['user_email'],但无法知道如何与其他用户的购物车会话链接。我是php的初学者

1 个答案:

答案 0 :(得分:0)

我将创建另一个称为“ TOKEN”的会话变量,或者对当前Unix时间戳进行MD5哈希处理并将其存储为会话令牌。使用当前Unix时间戳的MD5哈希值可以确保每次都具有唯一的会话令牌。您可能希望在用户登录时创建该文件,并且还要在用户表的数据库中存储当前会话令牌。这样,您可以在令牌等于用户令牌的地方调用会话变量。您也可以采用创建cookie的方法。无论哪种方式,它们都既简单又有效。