【问题标题】:Yii captcha picture Broken linkYii验证码图片链接失效
【发布时间】:2013-04-14 22:20:35
【问题描述】:

我只是想知道如何将 Yii 框架 demo-blog-contact 的确切代码从 Yii 网站下载到具有相同版本库的其他 yii 应用程序中,并且它不显示验证码。

当我转到控制器/操作页面时,它显示断开的链接而不是验证码,当我在新页面中打开断开的链接图像时,它显示另一个断开的链接。

我看到这个link 是关于 CCaptcha 的常见问题,我检查了 gd 库是否已启动并正在运行,并且我的 function actions() 内容与链接说,我没有在应用程序中定义任何访问控制过滤器

我看到了这个link,我没有权限问题,这个link,我没有ajax。

我和link 说的完全一样,但没有成功。任何帮助显示这些验证码将不胜感激。

控制器:

public function actions()
{
    return array(
        'captcha'=>array(
            'class'=>'CCaptchaAction',
            'backColor'=>0xFFFFFF,
        ),
        'page'=>array(
            'class'=>'CViewAction',
        ),
    );
}

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

型号:

<?php
class ContactsM extends CFormModel {
    public $name;
    public $email;
    public $subject;
    public $body;
    public $verifyCode;

    /**
     * Declares the validation rules.
     */
    public function rules()
    {
        return array(
            // name, email, subject and body are required
            array('name, email, subject, body', 'required'),
            // email has to be a valid email address
            array('email', 'email'),
            // verifyCode needs to be entered correctly
            array('verifyCode', 'captcha', 'allowEmpty'=>!CCaptcha::checkRequirements()),
        );
    }
    public function attributeLabels()
    {
        return array(
            'verifyCode'=>'Verification Code',
        );
    }
    }

查看:

<?php $form=$this->beginWidget('CActiveForm'); ?>
    <?php echo $form->errorSummary($model); ?>

    <?php if(extension_loaded('gd')): ?>
    <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 they are shown in the image above.
        <br/>Letters are not case-sensitive.</div>
    </div>
    <?php endif; ?>

    <div class="row submit">
        <?php echo CHtml::submitButton('Submit'); ?>
    </div>

<?php $this->endWidget(); ?>

【问题讨论】:

  • 你从哪个类扩展你的控制器?
  • 我在组件中创建了一个基本控制器并从它扩展。
  • 这些教程的问题是“它们没有显示所有代码”。

标签: php yii captcha


【解决方案1】:

我从您的评论中了解到您应该从 CController 扩展您的 Controller 类

【讨论】:

  • 它解决了我的问题,但是我应该如何处理我想要继承的 basecontroller 类?
  • 从另一个控制器继承应该不会导致任何问题。检查您的控制器是否有错误、php 中的空白或其他问题。
【解决方案2】:

我想分享我所了解的事实:

我的问题是:

我使用继承和父类有一些问题,子类扩展它但它没有显示任何错误,我认为它工作正常但实际上它没有,我理解它直到我使用了一些父函数在这种情况下是 CCaptcha。

【讨论】:

    猜你喜欢
    • 2013-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-27
    • 2017-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多