2

我有默认模板和名为 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 中添加标题和元标记的正确方法吗?

谢谢!

4

1 回答 1

4

这不是输出标题和描述变量的安全方式。

Cake 确实有一个辅助函数,用于输出从文档中提取的元标记:

<?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); ?>">
于 2012-12-29T10:50:37.117 回答