gpt4 book ai didi

php - CModel 对比 CFormModel 对比 CActiveRecord

转载 作者:可可西里 更新时间:2023-11-01 13:43:17 24 4
gpt4 key购买 nike

我正在 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com