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

Admin后台通过GET参数传递产品ID编辑商品时链接跳转首页的问题排查

后台产品编辑跳转异常排查与修正

可直接定位的常见问题与解决方式

  • 路由解析未剥离GET参数
    当前使用的简易路由大多直接拆分完整请求URI来匹配控制器,如果没有单独剥离URL中?后面的查询参数,会把edit-product?id=xxx整个字符串当作控制器名,拼接出不存在的文件路径,触发系统默认的重定向到首页规则。
    修正方案:在路由解析的最开头,拆分PATH路径和查询参数,仅用PATH部分做控制器匹配:

    // 路由解析环节增加参数剥离逻辑
    $cleanRequestPath = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
    // 后续仅对$cleanRequestPath做分段拆分,定位对应的控制器文件
    
  • 校验逻辑未中断执行流程
    目前编辑页的校验存在明显流程漏洞:判断获取不到id参数时,仅打印了提示文本,没有终止后续代码运行。当参数为空时,代码会继续执行空入参的数据库查询,触发SQL层面的错误,若全局错误捕获配置了异常即重定向规则,就会出现点击链接直接跳首页的现象。
    修正后的校验代码:

    if(!isset($_GET['id']) || empty($_GET['id'])) {
        echo 'ürün bulunamadı.';
        exit; // 必须中断后续执行,避免无效查询触发全局错误重定向
    }
    
    $query = $db->prepare('SELECT * FROM product WHERE id = ?');
    $query->execute([
        $_GET['id']
    ]);
    $product = $query->fetchAll(PDO::FETCH_ASSOC);
    
  • 链接生成有效性排查
    打开浏览器开发者工具的网络面板,点击跳转链接检查实际发出的请求地址:

    • 确认生成的href是否存在路径异常,比如URL常量末尾已自带斜杠时,admin_url函数拼接出的路径是否出现重复斜杠//,导致路由匹配失效
    • 确认拼接后的GET参数是否完整,避免因$products['id']取值为空,生成/admin/edit-product?id=这类残缺链接,触发后台参数校验的重定向规则
  • 控制器文件匹配校验
    admin_controller函数会将传入的控制器名转为小写后拼接文件路径,需要检查admin/controller目录下是否存在edit-product.php文件。若文件名大小写不一致、或对应文件缺失,也会触发系统默认的重定向逻辑。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 12:06:03