在我的应用程序中使用多个布局后,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>
...
我在请求记录器上测试了它并发送和接收了请求。
提前致谢
答案 0 :(得分:1)
我通过添加删除Bom功能
来修复它ob_start('My_OB');
function My_OB($str, $flags)
{
//remove UTF-8 BOM
$str = preg_replace("/\xef\xbb\xbf/","",$str);
return $str;
}
我猜问题是页面编码。
答案 1 :(得分:0)
如果您使用的是访问控制,则很可能是您没有为验证码操作设置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('*'),
),
);
}