之前看过使用sfCaptchaGDPlugin插件的文章。。按照上面的步骤下来。貌似还是不行。

这里我使用的是symfony1.4,把我正常情况下的步骤放上来,大家分享一下。

1.首先去下载sfCaptchaGDPlugin

2.启用插件,要在ProjectConfiguration.class.php里面添加上

   
   
   
   
  1. class ProjectConfiguration extends sfProjectConfiguration { 
  2.  
  3.     public function setup() { 
  4.         $this->enablePlugins('sfDoctrinePlugin'); 
  5.         $this->enablePlugins('sfDoctrineGuardPlugin'); 
  6.         $this->enablePlugins('sfDoctrineActAsSignablePlugin'); 
  7.         $this->enablePlugins('sfCaptchaGDPlugin'); 
  8.     } 

3.在你要使用的app里面启用插件。。修改settings.yml

   
   
   
   
  1. all: 
  2.   .settings: 
  3.     # Form security secret (CSRF protection) 
  4.     csrf_secret:            db498ea94181dc9c289cac99a1e665488bf7daed 
  5.     enabled_modules:      [default, sfGuardGroup, sfGuardUser, sfGuardPermission,sfGuardAuth,sfCaptchaGD] 
  6.     # Output escaping settings 
  7.     escaping_strategy:      true 
  8.     escaping_method:        ESC_SPECIALCHARS 
  9.  
  10.     # Enable the database manager 
  11.     use_database:           true 
  12.     # sfDoctrinePlugin插件设置登入登出动作 
  13.     login_module:           sfGuardAuth  
  14.     login_action:           signin 
  15.      
  16.     # ecNote sfDoctrinePlugin插件设置认证控制动作 
  17.     secure_module:          sfGuardAuth 
  18.     secure_action:          secure 
  19.     standard_helpers:     [Partial, Cache, I18N] 
  20.     i18n:                 true 

4.可以在APP.YML里面配置一些插件。

   
   
   
   
  1. all: 
  2.     sf_captchagd: 
  3.         p_w_picpath_width:                   100                                          # 验证码图片的宽度(px) 
  4.         p_w_picpath_height:                  30                                           # 验证码图片的高度(px) 
  5.         chars:                         "123456789abc"                    # 验证码中会出现的字符 
  6.         length:                        4 # 验证码长度 
  7.         font_size:                     18 # 字体大小 
  8.         force_new_captcha:           false # if true - captcha regenerated EVERY request, even if user input true value before 
  9.  
  10.         # possible chars colors 
  11.         font_color:                    ["252525""8b8787""550707""3526E6""88531E"]       #字体色 
  12.  
  13.         # chars fonts 
  14.         fonts:                         ["akbar/akbar.ttf""brushcut/BRUSHCUT.TTF""molten/molten.ttf""planet_benson/Planetbe.ttf""whoobub/WHOOBUB_.TTF"]                #字体 
  15.         background_color:              DDDDDD                            # 验证码的背景色 
  16.         border_color:                  000000                               # 验证码的边框色 

5.增加一条插件的路由,routing.yml

   
   
   
   
  1. sf_captchagd: 
  2.   url:    /administrator/captcha/:key/:reload 
  3.   param:  { module: sfCaptchaGD, action: getImage, key: failed, reload: 0 } 

6. 修改插件的权限控制,把插件的访问权限关掉。

plugins/sfCaptchaGDPlugin/modules/sfCaptchaGD/

在这个目录下新增config文件夹,并添加security.yml文件。

   
   
   
   
  1. default: 
  2.   is_secure: false 

7.确保你的系统的extension=php_gd2.dll是开启的。

8.接着CC一下我们的项目

9.在我们的表单里面添加插件信息。

projectName\plugins\sfDoctrineGuardPlugin\lib\form\doctrine

   
   
   
   
  1. class sfGuardFormSignin extends BasesfGuardFormSignin 
  2.   /** 
  3.    * @see sfForm 
  4.    */ 
  5.   public function configure() 
  6.   { 
  7.       $this->widgetSchema['captcha'] = new sfWidgetCaptchaGD(); 
  8.       $this->validatorSchema['captcha'] = new sfCaptchaGDValidator(array('length' => 4),array('required'=>'验证码为必填项!','invalid'=>'验证码错误!','length'=>'请输入4位验证码!')); 
  9.       $this->widgetSchema['captcha']->setLabel('验证码'); 
  10.   }