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

如何通过PHP GET请求正确显示GIF验证码图片?解决编码乱码问题

解决验证码图片输出乱码的问题

你看到乱码的核心原因是:浏览器默认将输出内容解析为纯文本,但你实际输出的是GIF图片的二进制数据。你的代码只在请求目标服务器时设置了请求头,却没有给当前PHP脚本的响应设置正确的HTTP头,告诉浏览器这是一张图片。

另外你的请求头还有个小问题:多个HTTP头字段之间需要用\r\n分隔,否则目标服务器可能无法正确解析你的请求头。

修改后的代码:

<?php
// 先设置响应头,告诉浏览器这是GIF图片
header('Content-Type: image/gif');

// 修正请求头格式:多个头用\r\n分隔,GET请求不需要Content-type(可选移除)
$opts = array(
    'http' => array(
        'method' => "GET",
        'header' => "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:51.0) Gecko/20100101 Firefox/51.0\r\n"
    )
);
$context = stream_context_create($opts);
$url = "http://api.solvemedia.com/papi/media?c=2@o-mubMTi7BBM98cMxgtIcLP4k1Ga5QJl@XmSqPdjlX-EENU8bgrS8i39APTC4lJjob8CffjsxV9jrIPX3GtuHidRkFAj1t048X4InDBGooKrfHCJw-UPc3RJpBQsHb2I4Ug4VdDwqVA6LkWJh3SQOW.xtxmxeN9pNZ1mEbLs-u3qV.Yggw0lLbut2o9pohrFf1j5Fdnw9hpKzSHxwwUck66zMZZv2-NaZh-D.wUNr5e6dWFspNlf-cGlixcH0GFCAtKyRSgVedyp15hlmTgWmuzlcfHwctVjdNqQUiVaxLDqzNsw71YyJ.aFCS7qjn4ZyJkhFXIK0uoAv0iP9---rdedIcIWDMcOAiIpU.IBN8Fs";
$image = file_get_contents($url, false, $context);
echo $image;
?>

额外优化:动态适配图片类型

如果不确定目标返回的图片是GIF/PNG/JPG,可以通过二进制内容判断图片类型,再设置对应的响应头,兼容性更好:

<?php
$opts = array(
    'http' => array(
        'method' => "GET",
        'header' => "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:51.0) Gecko/20100101 Firefox/51.0\r\n"
    )
);
$context = stream_context_create($opts);
$url = "http://api.solvemedia.com/papi/media?c=2@o-mubMTi7BBM98cMxgtIcLP4k1Ga5QJl@XmSqPdjlX-EENU8bgrS8i39APTC4lJjob8CffjsxV9jrIPX3GtuHidRkFAj1t048X4InDBGooKrfHCJw-UPc3RJpBQsHb2I4Ug4VdDwqVA6LkWJh3SQOW.xtxmxeN9pNZ1mEbLs-u3qV.Yggw0lLbut2o9pohrFf1j5Fdnw9hpKzSHxwwUck66zMZZv2-NaZh-D.wUNr5e6dWFspNlf-cGlixcH0GFCAtKyRSgVedyp15hlmTgWmuzlcfHwctVjdNqQUiVaxLDqzNsw71YyJ.aFCS7qjn4ZyJkhFXIK0uoAv0iP9---rdedIcIWDMcOAiIpU.IBN8Fs";
$image = file_get_contents($url, false, $context);

// 获取图片信息
$imageInfo = getimagesizefromstring($image);
if ($imageInfo) {
    // 设置对应响应头
    header("Content-Type: {$imageInfo['mime']}");
    echo $image;
} else {
    echo "无法获取有效图片";
}
?>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:46:18