之前看过使用sfCaptchaGDPlugin插件的文章。。按照上面的步骤下来。貌似还是不行。
这里我使用的是symfony1.4,把我正常情况下的步骤放上来,大家分享一下。
1.首先去下载sfCaptchaGDPlugin
2.启用插件,要在ProjectConfiguration.class.php里面添加上
- class ProjectConfiguration extends sfProjectConfiguration {
- public function setup() {
- $this->enablePlugins('sfDoctrinePlugin');
- $this->enablePlugins('sfDoctrineGuardPlugin');
- $this->enablePlugins('sfDoctrineActAsSignablePlugin');
- $this->enablePlugins('sfCaptchaGDPlugin');
- }
- }
3.在你要使用的app里面启用插件。。修改settings.yml
- all:
- .settings:
- # Form security secret (CSRF protection)
- csrf_secret: db498ea94181dc9c289cac99a1e665488bf7daed
- enabled_modules: [default, sfGuardGroup, sfGuardUser, sfGuardPermission,sfGuardAuth,sfCaptchaGD]
- # Output escaping settings
- escaping_strategy: true
- escaping_method: ESC_SPECIALCHARS
- # Enable the database manager
- use_database: true
- # sfDoctrinePlugin插件设置登入登出动作
- login_module: sfGuardAuth
- login_action: signin
- # ecNote sfDoctrinePlugin插件设置认证控制动作
- secure_module: sfGuardAuth
- secure_action: secure
- standard_helpers: [Partial, Cache, I18N]
- i18n: true
4.可以在APP.YML里面配置一些插件。
- all:
- sf_captchagd:
- image_width: 100 # 验证码图片的宽度(px)
- image_height: 30 # 验证码图片的高度(px)
- chars: "123456789abc" # 验证码中会出现的字符
- length: 4 # 验证码长度
- font_size: 18 # 字体大小
- force_new_captcha: false # if true - captcha regenerated EVERY request, even if user input true value before
- # possible chars colors
- font_color: ["252525", "8b8787", "550707", "3526E6", "88531E"] #字体色
- # chars fonts
- fonts: ["akbar/akbar.ttf", "brushcut/BRUSHCUT.TTF", "molten/molten.ttf", "planet_benson/Planetbe.ttf", "whoobub/WHOOBUB_.TTF"] #字体
- background_color: DDDDDD # 验证码的背景色
- border_color: 000000 # 验证码的边框色
5.增加一条插件的路由,routing.yml
- sf_captchagd:
- url: /administrator/captcha/:key/:reload
- param: { module: sfCaptchaGD, action: getImage, key: failed, reload: 0 }
6. 修改插件的权限控制,把插件的访问权限关掉。
plugins/sfCaptchaGDPlugin/modules/sfCaptchaGD/
在这个目录下新增config文件夹,并添加security.yml文件。
- default:
- is_secure: false
7.确保你的系统的extension=php_gd2.dll是开启的。
8.接着CC一下我们的项目
9.在我们的表单里面添加插件信息。
projectName\plugins\sfDoctrineGuardPlugin\lib\form\doctrine
- class sfGuardFormSignin extends BasesfGuardFormSignin
- {
- /**
- * @see sfForm
- */
- public function configure()
- {
- $this->widgetSchema['captcha'] = new sfWidgetCaptchaGD();
- $this->validatorSchema['captcha'] = new sfCaptchaGDValidator(array('length' => 4),array('required'=>'验证码为必填项!','invalid'=>'验证码错误!','length'=>'请输入4位验证码!'));
- $this->widgetSchema['captcha']->setLabel('验证码');
- }
- }