<?php
// 改进的验证码生成
ob_start();

// 关闭错误显示
error_reporting(0);
ini_set('display_errors', 0);

session_start();

// 检查GD库
if (!extension_loaded('gd')) {
    header('Content-type:text/html;charset=utf-8');
    echo 'GD库未启用';
    exit;
}

// 创建验证码图片
$width = 140;
$height = 50;
$img = imagecreatetruecolor($width, $height);

// 填充背景 - 使用浅色背景
$bg_color = imagecolorallocate($img, 240, 240, 240);
imagefilledrectangle($img, 0, 0, $width, $height, $bg_color);

// 生成随机验证码 - 只使用大写字母和数字，提高可读性
$charset = 'ABCDEFGHKMNPRSTUVWXYZ23456789';
$code = '';
$codelen = 4;
for ($i=0; $i<$codelen; $i++) {
    $code .= $charset[mt_rand(0, strlen($charset)-1)];
}

// 保存验证码到session
$_SESSION['vc_code'] = strtolower($code);

// 绘制验证码
$font_size = 20;
$x_start = 15;
$y_start = 35;
$char_width = ($width - 30) / $codelen;

for ($i=0; $i<$codelen; $i++) {
    // 使用深色字体，提高对比度
    $font_color = imagecolorallocate($img, mt_rand(0, 100), mt_rand(0, 100), mt_rand(0, 100));
    
    // 添加轻微的倾斜效果
    $angle = mt_rand(-10, 10);
    
    // 计算每个字符的位置
    $x = $x_start + $i * $char_width;
    $y = $y_start;
    
    // 使用更大的字体
    imagestring($img, 5, $x, $y - 15, $code[$i], $font_color);
}

// 添加少量干扰线
$line_count = 3;
for ($i=0; $i<$line_count; $i++) {
    $line_color = imagecolorallocate($img, mt_rand(100, 180), mt_rand(100, 180), mt_rand(100, 180));
    imageline($img, mt_rand(0,$width), mt_rand(0,$height), mt_rand(0,$width), mt_rand(0,$height), $line_color);
}

// 添加少量干扰点
$dot_count = 50;
for ($i=0; $i<$dot_count; $i++) {
    $dot_color = imagecolorallocate($img, mt_rand(150, 200), mt_rand(150, 200), mt_rand(150, 200));
    imagestring($img, 1, mt_rand(0,$width), mt_rand(0,$height), '.', $dot_color);
}

// 清空输出缓冲区
ob_clean();

// 设置内容类型
header('Content-type:image/png');

// 输出图片
imagepng($img);

// 销毁图片资源
imagedestroy($img);

// 结束输出
ob_end_flush();
exit;
?>