我有默认模板和名为home.ctp的视图
当用户呼叫主页 / 时,主页视图会在default.ctp中呈现。
在我的视图中我有:
<?php
$this->set('title', 'This is the title');
$this->set('description', 'This is the description');
...
?>
在我的 default.ctp 中我有:
<title><?php echo $title; ?></title>
....
<meta name="description" content="<?php echo $description; ?>">
....
它可以正常工作,但是,这是在CakePHP中添加标题和元标记的正确方法吗?
谢谢!
答案 0 :(得分:4)
这不是输出标题和描述变量的安全方法。
Cake确实有来自docs的outputting metatags提取的辅助函数:
<?php
echo $this->Html->meta(
'description',
'enter any meta description here'
);
?>
// Output
<meta name="description" content="enter any meta description here" />
您不必使用上述功能 - 但如果不这样做,则必须注意逃避变量。考虑一下这会发生什么:
$description = 'something with a "quote in it';
如果你只是盲目地回应变量 - 你将创建格式错误的html和/或允许注入攻击。因此,如果您适当地转义$title
和$description
,则可以使用问题中的代码:
<title><?php echo htmlspecialchars($title); ?></title>
....
<meta name="description" content="<?php echo htmlspecialchars($description); ?>">