You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PHP $_SESSION变量在商品列表同页展示点击的商品

SESSION实现单页幻灯片商品详情展示方案

核心逻辑

  • 用户点击商品时携带当前商品的唯一id跳转
  • 后端接收id后存入SESSION全局变量跨请求保存
  • 商品详情slide读取SESSION中的id查询对应商品信息,渲染到对应位置

实现步骤

1. 开启SESSION支持

在index.php文件最顶部(所有HTML输出前,不能有任何前置空格、换行)添加如下代码,同时可以把公共的数据库连接代码放在这里,避免重复编写:

<?php
session_start();
// 公共数据库连接
$con = mysqli_connect("localhost:3306", "root", "", "users");
// 处理前端传递的选中商品id
if (isset($_GET['selected_pid'])) {
    // 转整型过滤参数,防止SQL注入
    $_SESSION['selected_product_id'] = intval($_GET['selected_pid']);
}
?>

2. 修改Slide3商品列表的跳转链接

原循环内的a标签存在id重复问题,同时需要携带商品id参数,修改对应代码:

<!-- 把原来的<a href="#7" id="p_click">改为以下内容 -->
<a href="?selected_pid=<?= $product['id'] ?>#7" class="p_click"><img src="<?= $product['image']; ?>" alt=""></a>

说明:把重复的id属性改为class,链接中新增selected_pid参数传递当前商品的数据库id,锚点#7保证跳转到对应slide

3. 修改Slide7代码渲染商品信息

在Slide7中读取SESSION存储的商品id,查询数据库后输出对应内容到

标签:

<div class="slide" id="7" >
    <div class="content seventh-content">
        <div class="container-fluid">
            <form id="product" action="" method="post">
                <div class="row">
                    <div class="col-md-12">
                        <?php
                        $current_product = null;
                        // 判断SESSION中是否存在选中的商品id
                        if (isset($_SESSION['selected_product_id'])) {
                            $pid = $_SESSION['selected_product_id'];
                            $query = mysqli_query($con, "SELECT * FROM Products WHERE id = $pid LIMIT 1");
                            if ($query && mysqli_num_rows($query) > 0) {
                                $current_product = mysqli_fetch_assoc($query);
                            }
                        }
                        ?>
                        <h2><?= $current_product ? $current_product['title'] : '未查询到对应商品' ?></h2>
                        <!-- 后续需要展示商品价格、描述、图片等信息,直接从$current_product数组中取值即可 -->
                    </div>
               </div>
            </form>
        </div>
    </div>
</div>

注意事项

  • 所有数据库操作的用户输入参数都要做过滤,本方案中用intval()转换商品id为整型,是基础的防SQL注入处理,符合课程项目的安全要求
  • 不需要在每个slide中重复编写数据库连接代码,统一放在页面顶部即可,减少冗余代码
  • 如果不希望页面刷新,可以改用AJAX请求把选中的商品id传给后端存SESSION,再用JS跳转到slide7,本质逻辑和上述方案一致

内容的提问来源于stack exchange,提问作者spaceTRT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 09:45:04