6

我有一个用户注册表单,我在其中尝试使用 Yii 小部件 CCaptcha 显示验证码图像,但是我的图像链接似乎已损坏,控制器文件:

public function actions()
    {
        return array(
            // captcha action renders the CAPTCHA image displayed on the contact page
            'captcha'=>array(
                'class'=>'CCaptchaAction',
                'backColor'=>0xFFFFFF,
            ),
        );
    } 

模型文件:

public function rules()
 {
    return array( array('verifyCode','captcha','allowEmpty'=>!CCaptcha::checkRequirements(),'on'=>'insert'), 
);
}

并查看文件:

<?php if(CCaptcha::checkRequirements()): ?>
    <div class="row">
        <?php echo $form->labelEx($model,'verifyCode'); ?>
        <div>
        <?php $this->widget('CCaptcha'); ?>
        <?php echo $form->textField($model,'verifyCode'); ?>
        </div>
        <div class="hint">Please enter the letters as shown.
        <br/>Letters are not case-sensitive.</div>
        <?php echo $form->error($model,'verifyCode'); ?>
    </div>
    <?php endif; ?>

作为某处提供的答案,我还尝试在我的控制器文件中给出访问规则

public function accessRules()
{
    return array(
        array('allow',
         'actions' => array('captcha'), 
         'users' => array('*'),
         ),
    );
}

但似乎没有任何效果。

4

2 回答 2

8

问题出在控制器文件上,应该是,

public function accessRules()
    {
        return array(
            array('allow', 
                'actions'=>array('create', 'captcha'),
                'users'=>array('*'),
            ),
    } 


而我在最后提到了验证码的动作,我发现这在 Yii 中是不允许的。* 的所有允许操作应该在一起。

于 2012-08-15T15:08:10.340 回答
-1

Yii 验证码将创建一个 png 图像。损坏的图像链接的可能解释是缺少 GD 扩展名或 imagick 扩展名,可以通过您的 中存在以下文本来识别error.log

调用未定义的函数 imagecreatetruecolor

有关详细信息和修复,请参阅PHP 和 pChart 中的“调用未定义函数 imagecreatetruecolor”错误

于 2016-04-26T07:57:20.353 回答