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

使用cURL调用phpcodechecker API返回null,参数传递是否有误?

问题分析与修复方案

核心问题

  1. 未传递code参数:当前代码既没把code拼进GET请求URL,也没开启POST请求传递参数,导致API接收不到待检查代码。
  2. 字符串解析错误:原代码用双引号定义$code,其中的$string会被PHP当作变量解析(未定义时为空),导致传递的代码不符合预期。
  3. 编码与请求规则不匹配:若用POST方式,未遵循API要求的编码逻辑和参数标识规则。

修复后的代码示例

方案1:GET请求方式

直接将code参数URL编码后拼接在请求URL中:

// 用单引号避免$string被解析,或转义$为\$
$code = '
    function test($string){
        return $string ;
    }
';

$url = "http://phpcodechecker.com/api/?code=" . urlencode($code);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 GTB5');

$data = curl_exec($ch);

if (curl_errno($ch)) {
    print "Error: " . curl_error($ch);
    exit();
}

$json = json_decode($data, true);
curl_close($ch);

var_dump($json);

方案2:POST请求(带base64编码)

按照API要求先base64编码再URL编码,同时在URL中添加base64参数标识:

$code = '
    function test($string){
        return $string ;
    }
';

// 先base64编码,再URL编码
$encoded_code = urlencode(base64_encode($code));
$url = "http://phpcodechecker.com/api/?base64"; // 标识传递的是base64编码内容

$post_data = "code=" . $encoded_code;

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 GTB5');
// 启用POST请求
curl_setopt($ch, CURLOPT_POST, true);
// 设置POST请求体
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
// 设置正确的Content-Type
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded'));

$data = curl_exec($ch);

if (curl_errno($ch)) {
    print "Error: " . curl_error($ch);
    exit();
}

$json = json_decode($data, true);
curl_close($ch);

var_dump($json);

关键注意事项

  • 字符串定义:定义代码字符串优先用单引号,避免PHP解析$符号;若用双引号,需将$转义为\$。
  • 参数传递:GET请求需把codeURL编码后拼进URL;POST请求用base64编码时,要在URL加base64参数,且code值需先base64_encode()再urlencode()。
  • 请求头设置:POST请求必须设置Content-Type: application/x-www-form-urlencoded,确保服务器正确解析请求体。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 06:15:39