我使用Yii作为PHP Framework,当我需要从数据库中显示一些信息时,我总是使用CHtml :: encode来提高安全性。
我的问题是:当我在Yii小部件上显示值时,我是否需要这样做,例如TbDetailView或TbGridView?
例如,下面的代码中是否需要CHtml :: encode? p>
<?php $this->widget('bootstrap.widgets.TbDetailView',array(
'data'=>$model,
'attributes'=>array(
'id',
'nome',
'descricao',
'origem',
array('label'=>'Tipo de Refeição', 'value'=>CHtml::encode($model->tipoRefeicao ? $model->tipoRefeicao->nome : '')),
array('label'=>'Ativo', 'value'=>CHtml::encode($model->ativo ? 'Sim' : 'Não')),
),
)); ?>
答案 0 :(得分:1)
CHtml::encode()
函数是PHP htmlspecialchars函数的包装器,它将特殊字符编码为HTML实体。某些字符在HTML中具有特殊意义,如果要保留其含义,则应由HTML实体表示,执行转换
- '&' (ampersand) becomes '&'
- '"' (double quote) becomes '"'
- "'" (single quote) becomes '''
- '<' (less than) becomes '<'
- '>' (greater than) becomes '>'
如果DB中的那个字段可能包含这些字符,则必须对其进行编码,否则可能会破坏HTML输出,如果不是,则不需要对其进行编码