Var*_*ain 5 php yii yii-cmodel yii-cformmodel
我正在yii中构建一个数据库密集型应用程序.因此,性能和安全性自然是一个问题.除此之外,表格验证也是一个主要标准.为了安全起见,我计划对所有Sql查询使用参数绑定.为了验证,我想使用Yii提供的验证器,而不是自己推出验证器.我知道性能会受到CActiveRecord的影响.所以我打算为我的所有表创建Cmodel类,在这些相应的模型中定义验证规则,并定义执行sql查询以检索和插入数据的函数.我在网站上的所有数据收集主要是通过表格(约95%),如果我使用Cformmodel,我真的不明白Cmodel和Cformmodel之间的区别,使用它们是否有任何性能损失.
另外为了防止XSS攻击,我想使用HTML purify包装器作为验证规则,因为我几乎到处读到性能对这个包装器不好的情况,即使我将它用作验证规则,它会不会很糟糕?我是否应该使用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)
Run Code Online (Sandbox Code Playgroud)
CFormModel继承自CModel,CModel只是一个通用的Model类,使用CFormModel没有性能差异,如果您不打算使用CActiveRecord,那么它更适合您的应用程序。
对于“执行 sql 查询的函数”,希望您指的是存储过程,否则不会有那么大的性能提升,即使如此,编写自己的 SQL 查询仅用于插入和检索单个模型也没有多大帮助。我的建议是你稍后关心性能。一旦你确实有需要改进的地方。
净化输入与编码不同,通过 HTML 净化,您可以消除有害的 html,以防止 XSS 或其他您不想允许的标签。但例如,字符串仍可以包含 ( ' )。CHtml::encode 的作用是生成 HTML 等效项,以便您获得 html 实体。