天天看點

symfony1.4下使用登陸驗證碼

之前看過使用sfCaptchaGDPlugin插件的文章。。按照上面的步驟下來。貌似還是不行。

這裡我使用的是symfony1.4,把我正常情況下的步驟放上來,大家分享一下。

1.首先去下載下傳sfCaptchaGDPlugin

2.啟用插件,要在ProjectConfiguration.class.php裡面添加上

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

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.     # Enable the database manager 
  10.     use_database:           true 
  11.     # sfDoctrinePlugin插件設定登入登出動作 
  12.     login_module:           sfGuardAuth  
  13.     login_action:           signin 
  14.     # ecNote sfDoctrinePlugin插件設定認證控制動作 
  15.     secure_module:          sfGuardAuth 
  16.     secure_action:          secure 
  17.     standard_helpers:     [Partial, Cache, I18N] 
  18.     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.         # possible chars colors 
  10.         font_color:                    ["252525", "8b8787", "550707", "3526E6", "88531E"]       #字型色 
  11.         # chars fonts 
  12.         fonts:                         ["akbar/akbar.ttf", "brushcut/BRUSHCUT.TTF", "molten/molten.ttf", "planet_benson/Planetbe.ttf", "whoobub/WHOOBUB_.TTF"]                #字型 
  13.         background_color:              DDDDDD                            # 驗證碼的背景色 
  14.         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一下我們的項目

  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.   }