在php会话中存储多个值

时间:2010-02-08 18:22:30

标签: php session

我正在用PHP写一个脚本,这与购物车非常相似。我想要做的是当用户添加某个产品时,我需要将productid添加到会话变量中,而不存储在数据库中。因此,每次用户添加产品时,productid都需要存储在会话变量中。

当用户结账时,我需要检索所有产品并显示?

有人可以解释一下如何做到这一点吗?因为1个产品很好,但不知道如何存储和检索多个值。

任何帮助将不胜感激

4 个答案:

答案 0 :(得分:13)

Array中放置Session。将项添加到数组中。

$_SESSION['cart'] = array();
$_SESSION['cart'][] = $apples;
$_SESSION['cart'][] = $oranges;
$_SESSION['cart'][] = $pears;

注意:将$apples$oranges$pears替换为您的产品ID。

您可以像在PHP中的任何其他数组一样访问数组,例如到count项:

echo count($_SESSION['cart']);
对项目

iterate

foreach($_SESSION['cart'] as $item)
{
    echo $item;
}

您还可以将Session包装到一个对象中,并通过方法界面提供对购物车的访问权限,但我留给其他人解释。

答案 1 :(得分:3)

每个会话都是一个关联数组。您可以在其中存储其他数组,例如

$_SESSION['products']=array();
$_SESSION['products'][]='123123'
$_SESSION['products'][]='cow_34526'

然后你可以像使用任何其他数组一样使用它,即

foreach($_SESSION['products'] as $item){
  //display or process as you wish
  }

答案 2 :(得分:3)

将以下内容放在名为index.php的文件中并进行测试:

<?php
session_start();
if(isset($_POST['product'])) {
    $products = isset($_SESSION['products']) ? $_SESSION['products'] : array();
    $products[] = $_POST['product'];
    $_SESSION['products'] = $products;
}
?>

<html>
    <body>
        <pre><?php print_r($_SESSION); ?></pre>
        <form name="input" action="index.php" method="post">
            <input type="text" name="product" />
            <input type="submit" value="Add" />
        </form> 
    </body>
</html>

答案 3 :(得分:0)

$role=json_encode($checkUser1[0]);
$role2=str_replace('"','',$role);
$company=json_encode($checkUser2[0]);
$company=str_replace('"','',$company);
$_SESSION['LOGIN_STATUS']=true;
$_SESSION['UNAME']=$uname;
$_SESSION['datefrmt']='dd/mm/yy';
$_SESSION['role']=$role2;
$_SESSION['company']=$company;