在Symfony 3.4中的控制器中返回验证码

在Symfony 3.4中的控制器中返回验证码,symfony,Symfony,我在symfony 3.4中的一个控制器上执行了一个操作,该操作返回一个用文本创建的图像,问题是当我在浏览器中看到图像时,您会看到一个没有任何内容的白色小正方形,我没有收到任何类型的错误 守则: <?php namespace Programas\Bundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Component\HttpFoundation\Respons

我在symfony 3.4中的一个控制器上执行了一个操作,该操作返回一个用文本创建的图像,问题是当我在浏览器中看到图像时,您会看到一个没有任何内容的白色小正方形,我没有收到任何类型的错误

守则:

<?php

namespace Programas\Bundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;

class CaptchaController extends Controller
{
    public function indexAction()
    {
        $response = new Response();
        $response->headers->set('Content-Type', 'image/png');

        #

        $word = "";

        $image = imagecreatetruecolor(500, 500);

        $background_color = imagecolorallocate($image, 255, 255, 255);  
        imagefilledrectangle($image,0,0,200,50,$background_color);

        $line_color = imagecolorallocate($image, 64,64,64); 
        for($i=0;$i<10;$i++) {
            imageline($image,0,rand()%50,200,rand()%50,$line_color);
        }

        $pixel_color = imagecolorallocate($image, 0,0,255);
        for($i=0;$i<1000;$i++) {
            imagesetpixel($image,rand()%200,rand()%50,$pixel_color);
        }  

        $letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
        $len = strlen($letters);
        $letter = $letters[rand(0, $len-1)];

        $text_color = imagecolorallocate($image, 0,0,0);

        for ($i = 0; $i< 6;$i++) {
            $letter = $letters[rand(0, $len-1)];
            imagestring($image, 5,  5+($i*30), 20, $letter, $text_color);
            $word.=$letter;
        }

        ImagePng($image);

        #

        ob_start();

        imagepng($image);

        $imagevariable = ob_get_contents(); 

        ob_end_clean(); 

        ImageDestroy($image);

        $response->setContent($imagevariable); 

        return $response;
    }
}

如何正确显示图像的显示?

使用验证码捆绑包并在表单类型中使用验证码更容易、更好

然后您可以像这样使用$builder->add'captcha',CaptchaType::class


我相信还有其他一些好的捆绑包,但你尝试的不是最好的方式。通常,您必须扩展表单生成器并呈现captcha字段。您可以查看捆绑包是如何解决的

谢谢你的回答,问题是我想学习如何制作自己的验证码是的,但是你需要一种形式的验证码。。。为此,您必须扩展表单生成器。。。