您的位置:首页 > 其它

在Symfony2中生成验证码2

2016-03-17 00:42 459 查看
编辑
composer.json
,在
require
段中加入一行依赖:
"gregwar/captcha":
"1.*"

执行
composer update
安装依赖包
然后就可以在控制器里调用该依赖包啦,下面是具体的代码:
<?php

namespace Site\CommonBundle\Controller;

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Symfony\Component\HttpFoundation\Response;
use Gregwar\Captcha\PhraseBuilder;
use Gregwar\Captcha\CaptchaBuilder;

class DefaultController extends BaseController
{
/**
* 生成验证码.
*
* @Route("captcha", name="site_common_captcha")
*/
public function captchaAction()
{
$req = $this->getRequest();

$width = intval($req->get('width')) ?: 150;  // 验证码图片的宽度
$height = intval($req->get('height')) ?: 50;  // 验证码图片的高度
$length = 5;  // 验证码字符的长度
$no_effect = true;  // 是否忽略验证图片上的干扰线条

$pharse = new PhraseBuilder();
$captcha = new CaptchaBuilder($pharse->build($length));
$image = $captcha->setIgnoreAllEffects($no_effect)->build($width, $height)->get();

$session = $req->getSession();
$session->set('captcha', $captcha->getPhrase());

$res = new Response($image);
$res->headers->set('content-type', 'image/jpeg');

return $res;
}
}


如此,验证码图片的访问地址为:
http://www.example.com/captcha?width=100&height=30
(可以传递参数改变图片的尺寸)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: