2013-01-01 74 views
1

我在應用中使用多個佈局後,然後CPATCHA不顯示任何圖像:(驗證碼不顯示任何圖像

這是我的代碼

控制器:

public function actions() 
     { 
       return array(
         // captcha action renders the CAPTCHA image displayed on the contact page 
         'captcha'=>array(
           'class'=>'CCaptchaAction', 
           'backColor'=>0xFFFFFF, 
         ), 
         // page action renders "static" pages stored under 'protected/views/site/pages' 
         // They can be accessed via: index.php?r=site/page&view=FileName 
         'page'=>array(
           'class'=>'CViewAction', 
         ), 
       ); 
     } 

模型:

public function rules() 
{ 
     return array(
       array('email, password', 'required','message'=>'-- {attribute} '), 

       array('password', 'authenticate'), 

       // verifyCode needs to be entered correctly 
     array('verifyCode', 'captcha', 'allowEmpty'=>!CCaptcha::checkRequirements(),'message'=>' {attribute} Error '), 

); 

} 

查看調用小部件

... 
     <div> 
       <?php $this->widget('CCaptcha'); ?> 
       <?php echo $form->textField($model,'verifyCode'); ?> 
       </div> 
... 

我測試了它的請求記錄器,它發送和接收請求。 Captcha

在此先感謝

+0

因爲您確信captcha只有在添加多個佈局後才顯示,請添加多個佈局的代碼,也許在導致此錯誤的代碼中存在一些錯誤,儘管這不太可能。你有沒有檢查你的CSS? –

+0

我想現在多樣式不涉及這個問題?! 我想別的 –

+0

確定要做的測試,當然,嘗試多個佈局,沒有。看看它們是否都失敗了。你也可以從視圖中顯示整個驗證碼行,你在做checkRequirements檢查嗎? –

回答

1

我固定它通過添加刪除汜功能

ob_start('My_OB'); 
function My_OB($str, $flags) 
{ 
    //remove UTF-8 BOM 
    $str = preg_replace("/\xef\xbb\xbf/","",$str); 

    return $str; 
} 

我想這個問題是在網頁的編碼。

0

如果您正在使用訪問控制,它是最有可能的,你是不是對的captcha動作設置accessRules。您需要添加的動作,是這樣的:

public function accessRules() { 
    return array(
     array('allow', // all users 
      'actions' => ("captcha"), 
      'users' => array('*'), 
     ), 
     array('allow', // authenticated users 
      'actions' => ("captcha"), 
      'users' => array('@'), 
     ), 
     array('deny', // deny all users 
      'users' => array('*'), 
     ), 
    ); 
} 
+0

不,我設置了accessRules –