在Symfony 3.4中的控制器中返回验证码
我在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
<?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字段。您可以查看捆绑包是如何解决的 谢谢你的回答,问题是我想学习如何制作自己的验证码是的,但是你需要一种形式的验证码。。。为此,您必须扩展表单生成器。。。