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

PHP网站支付成功跳转后details.php与index.php内容同时显示的问题解决咨询

问题诊断与解决方案

你遇到的问题核心原因非常清晰:details.php文件最顶部的include 'index.php';语句,它会把index.php的全部内容直接嵌入到details.php页面中,这就导致两个页面的内容叠加显示了。

具体修复步骤:


1. 修复details.php的核心问题

直接删除details.php开头的include 'index.php';语句。这个引入完全没必要,因为details.php是独立的详情页面,不需要把首页内容嵌套进来。

修正后的details.php开头代码:

<?php 
include 'config/db_connect.php'; 
include 'config/db.php'; 
// 移除 include 'index.php'; 这一行

if (isset($_POST['delete'])) { 
    $id_to_delete = mysqli_real_escape_string($conn, $_POST['id_to_delete']); 
    $sql = "DELETE FROM customers WHERE id = $id_to_delete"; 
    if (mysqli_query($conn, $sql)) { 
        header('Location: index.php'); 
    } else { 
        echo 'query error: ' . mysqli_error($conn); 
    } 
} 

// check GET request id param 
if (isset($_GET['id'])) { 
    // escape sql chars 
    $id = mysqli_real_escape_string($conn, $_GET['id']); 
    // make sql 
    $sql = "SELECT * FROM customers WHERE id = $id"; 
    // get the query result 
    $result = mysqli_query($conn, $sql); 
    // fetch result in array format 
    $customer = mysqli_fetch_assoc($result); 
    mysqli_free_result($result); 
    //mysqli_close($conn); 
} 
?>

2. 顺便修复success.php的两个潜在问题

你的success.php里也有两个小问题,建议一起修正:

  • 同样不需要include 'index.php';,否则success.php页面也会显示首页内容
  • 重定向语句里的$customer['id']变量未定义,会导致URL拼接错误,需要先从数据库获取该用户信息

修正后的success.php代码:

<?php 
// 移除 include 'index.php'; 这一行
include 'config/db_connect.php'; // 引入数据库连接
include 'config/db.php';

if(!empty($_GET['tid'] && !empty($_GET['product']))) { 
    $GET = filter_var_array($_GET, FILTER_SANITIZE_STRING); 
    $tid = $GET['tid']; 
    $product = $GET['product']; 

    // 这里需要根据交易ID或产品信息获取对应的customer_id,示例假设tid关联customer表的id
    $sql = "SELECT id FROM customers WHERE transaction_id = '$tid'";
    $result = mysqli_query($conn, $sql);
    $customer = mysqli_fetch_assoc($result);
} else { 
    header('Location: payment.php'); 
    exit; // 跳转后要终止脚本执行,避免后续代码输出
} 
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
<title>Thank You</title>
</head>
<body>
<div class="container mt-4">
<h2>Thank you for purchasing <?php echo $product; ?></h2>
<hr>
<p>Your transaction ID is <?php echo $tid; ?></p>
<p>Check your email for more info</p>
<?php 
// 确保$customer存在再跳转,避免报错
if($customer) {
    header('Refresh: 2; URL=details.php?id='.$customer['id']);
} else {
    header('Refresh: 2; URL=index.php'); // 异常情况 fallback跳转首页
}
?>
</div>
</body>
</html>

额外提示:

  • 使用header()跳转后,一定要加上exit;或die();终止脚本执行,避免后续代码继续输出内容
  • 所有数据库查询都要做好SQL注入防护,你已经用了mysqli_real_escape_string,这点做得很好

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 13:02:48