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

PHP GET请求第二个分支无响应,寻求排查解决方法

PHP代码中publisher分支无响应问题修复方案

问题描述

编写的PHP代码中,loadcat分支可正常运行,但publisher分支无响应,即使将该分支代码移出if else结构,依旧无法得到响应。代码如下:

<?php
include('internet.php');
if(!empty($_GET['x'])){
    $x = $_GET['x'];
    if($x=='loadcat'){
        $cats = $pdo->prepare("SELECT * FROM categories ORDER BY category");
        $cats->execute();
        $cat = array();
        if($cats->rowCount()>0){
            while($c=$cats->fetch()){
                array_push($cat,$c['category']);
            }
        }
        echo json_encode(array(
            'status'=>1,
            'cat'=>$cat
        ));
    }else if($x=='publisher'){
        $userid = $_POST['publisher'];
        $user = $pdo->prepare("SELECT name,photo FROM users WHERE userid='$userid'");
        $user->execute();
        if($user->rowCount()==1){
            $u = $user->fetch();
            $photo = $u['photo'];
            $name = $u['name'];
            $uname = $userid;
        }else{
            $photo = '/cd_blog/img/user404.png';
            $name = '[Not Found]';
            $uname = '[Not Found]';
        }

        echo json_encode(array(
            'status'=>1,
            'photo'=>$photo,
            'name'=>$name,
            'uname'=>$uname
        ));
    }
}
?>

排查与修复步骤

  • 验证请求参数与方式
    publisher分支依赖$_POST['publisher']参数,若请求为GET方式(如直接在浏览器地址栏访问),$_POST变量为空,会导致SQL语句异常。需确保请求为POST方法,且正确传递publisher参数。可在分支开头添加调试代码确认参数:
    var_dump($_POST); // 输出POST参数,确认publisher是否存在
    
  • 修复SQL注入风险与语法错误
    当前代码直接将$userid拼接进SQL语句,存在SQL注入风险,且若$userid含特殊字符会触发语法错误。改用PDO参数绑定:
    // 替换原SQL准备与执行代码
    $user = $pdo->prepare("SELECT name,photo FROM users WHERE userid=?");
    $user->execute([$userid]);
    
  • 开启错误调试
    在代码开头添加错误显示配置,直接查看运行时报错:
    error_reporting(E_ALL);
    ini_set('display_errors', 1);
    
  • 检查PDO连接与错误模式
    确认internet.php中的PDO连接是否正常,建议开启PDO异常模式,便于捕获连接或SQL执行错误:
    // 在PDO实例化后添加
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
  • 确认请求的x参数正确性
    确保请求URL中包含x=publisher(如your_script.php?x=publisher),同时通过POST传递publisher参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 00:53:14