PHP用$_SESSION实现购物车时无法正确打印$_SESSION['cart']商品
问题修复方案
核心错误点
- 会话初始化顺序错误:
session_start()必须在所有页面输出(包括引入文件的输出、空格、换行等)之前调用,你当前展示购物车的代码先引入了navbar.php,会导致会话读取失败 - 关联数组输出逻辑错误:存入
$_SESSION['cart']的每个元素都是包含pid、name的关联数组,PHP不支持直接echo输出数组,需要读取对应键的值输出
修正后代码
购物车商品添加逻辑(补充基础参数校验)
<?php session_start(); if(!isset($_SESSION['cart'])){ $_SESSION['cart'] = array(); } // 校验pid合法性避免非法提交 if(isset($_POST['pid']) && is_numeric($_POST['pid'])){ $item = array( "pid" => $_POST['pid'], "name" => "bloom flowers" ); array_push($_SESSION['cart'], $item); echo "Done!"; } ?>
购物车商品展示逻辑
<?php // 会话初始化必须放在代码最顶部,早于所有输出内容 session_start(); include 'navbar.php'; if(isset($_SESSION['cart']) && !empty($_SESSION['cart'])){ foreach ($_SESSION['cart'] as $item){ // 读取关联数组对应键的值输出 echo '<h5>商品ID:'.$item['pid'].' 商品名称:'.$item['name'].'</h5>'; } } else { echo '<h5>购物车为空</h5>'; } ?>
内容的提问来源于stack exchange,提问作者Safina Siddique
相关产品推荐
相关产品推荐

