php - CModel 对比 CFormModel 对比 CActiveRecord

标签 php yii yii-cmodel yii-cformmodel

我正在 yii 中构建一个数据库密集型应用程序。所以性能和安全性自然是一个问题。除此之外,表单验证也是一个主要标准。为了安全起见,我计划对所有 Sql 查询使用参数绑定(bind)。对于验证,我想使用 Yii 提供的验证器而不是推出我自己的 .我知道性能会受到 CActiveRecord 的影响。所以我计划为我的所有表制作 Cmodel 类,在这些各自的模型中定义验证规则,还定义函数来执行 sql 查询以检索和插入数据。我在网站上的所有数据收集主要是通过表单(大约 95%),我应该使用 Cformmodel 吗,我真的不明白 Cmodel 和 Cformmodel 之间的区别,使用任何一个都会影响性能。

另外,为了防止 XSS 攻击,我想使用 HTML purify wrapper 作为验证规则,因为我几乎到处都读到这个包装器的性能不好,即使我将它用作验证规则它也会变坏吗?即使我正在净化输入,我是否应该使用 Chtml::Encode 显示我的输出文本?

我处理数据的粗略计划是:

    $users= new Users() ; //Users is extending CModel , contains validation rules 
    $users=getdata(Yii->app->userid()) ; 
    if(isset('update'))
    {
        if($users->validate())
            {$users->updatedata() ; }
    }

$this->render('users','data'=>$users) 

最佳答案

CFormModel 继承自 CModel,CModel 只是一个通用的 Model 类,使用 CFormModel 没有性能差异,如果您不打算使用 CActiveRecord,CFormModel 更适合您的应用。

对于“执行 sql 查询的函数”,希望你指的是存储过程,否则不会有太大的性能提升,即便如此,编写自己的 SQL 查询仅用于插入和检索单个模型也无济于事。我的建议是您以后要关心性能。一旦你真的有什么需要改进的地方。

净化输入与编码不同,使用 HTML 净化可以消除有害的 html 以防止 XSS 或其他您不想允许的标记。但是一个字符串仍然可以包含 ( ' ) 例如。 CHtml::encode 的作用是,它只是生成 HTML 等效项,以便您获得 html 实体。

关于php - CModel 对比 CFormModel 对比 CActiveRecord,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12763763/

相关文章:

php - 在yii中为Cgridview设置css

php - zend Framework 2 - 缓存配置文件

Visual Studio 代码中的 PHPCS 设置

ubuntu - yiic.php 有效但 yiic 在 Ubuntu 中无效

php - Yii 命令行不自动加载模型

php - Yii Joined table 但不是所有选定的数据都被检索

php - Yii 获取模型作为参数

PHP echo 不显示在 HTML <h3> 标签内

PHP fseek 与远程视频或替代方案

php - Yii2 验证码刷新按钮