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

PHP重定向时无法输出两个$_GET参数?技术求助

修复带分页参数时帖子ID丢失的重定向代码

问题原因

你的代码生成t--p-2.html这类无效URL,核心问题是未提前校验threadid参数的存在性与有效性,直接赋值拼接URL。当threadid参数缺失(或拼写错误)时变量为空,叠加分页参数就会出现空占位符;同时直接使用原始GET参数,存在安全风险。

修复方案

以下是兼顾正确性、安全性与规范的优化代码:

<?php
// 先校验核心参数threadid,不存在直接跳首页
if (empty($_GET['threadid'])) {
    header("Location: index.html");
    exit;
}

// 将threadid转为整数,避免恶意注入,确保是有效数字
$threadId = (int)$_GET['threadid'];
$redirectUrl = "t-{$threadId}.html";

// 校验分页参数:存在、是数字且大于1时才拼接分页部分
if (isset($_GET['page']) && is_numeric($_GET['page']) && (int)$_GET['page'] > 1) {
    $page = (int)$_GET['page'];
    $redirectUrl = "t-{$threadId}-p-{$page}.html";
}

// 优先使用标准HTTP重定向头(效率更高、更符合规范)
header("Location: {$redirectUrl}");
exit;
?>
<!-- 浏览器不支持HTTP头重定向时的降级方案 -->
<html>
<head>
    <meta http-equiv="refresh" content="3;url=<?php echo $redirectUrl; ?>">
</head>
<body>
正在重定向至帖子ID <?php echo $threadId; ?>(如果档案中存在)
</body>
</html>

关键修复点

  • 核心参数校验:强制检查threadid是否存在,缺失则直接跳首页,从根源避免无效URL
  • 类型安全处理:将threadid和page转为整数,防止恶意字符串注入,确保参数合法
  • 分页逻辑优化:仅当分页参数是有效数字且大于1时才拼接,避免生成t-1-p-1.html这类冗余URL
  • 规范重定向方式:优先使用Location HTTP头重定向,比meta刷新更高效,同时保留meta作为降级方案
  • 语义化变量名:用$threadId替代$threadlink,提升代码可读性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 18:27:43