1

我使用 Yii 作为 PHP 框架,当我需要显示数据库中的一些信息时,我总是使用 CHtml::encode 来提高安全性。

我的问题是:当我在 Yii 小部件(例如 TbDetailView 或 TbGridView)上显示值时,我是否需要这样做?

例如,下面的代码中是否需要 CHtml::encode?

<?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')),
),
)); ?>
4

1 回答 1

1

CHtml::encode()函数是 PHP htmlspecialchars函数的包装器,它将特殊字符编码为 HTML 实体。某些字符在 HTML 中具有特殊意义,如果要保留其含义,则应由 HTML 实体表示,执行的转换是

 - '&' (ampersand) becomes '&amp;'
 - '"' (double quote) becomes '&quot;' 
 - "'" (single quote) becomes '&#039;'   
 - '<' (less than) becomes '&lt;'    
 - '>' (greater than) becomes '&gt;'

这意味着如果 DB 中的该字段可能包含这些字符中的任何一个,则必须对其进行编码,否则可能会破坏 HTML 输出,如果没有,则无需对其进行编码

于 2014-06-25T18:06:48.257 回答