我已经构建了一个基于Codeigniter的系统。
编辑屏幕时,我从数据库中获取值并显示在输入字段上。
示例:
<input type="text" class="form-control" required="" name="tes_title" value="<?php echo htmlspecialchars($tes_info['tes_title']); ?>">
所以我不得不使用htmlspecialchars
因为某些值包含双引号和单引号。但是手动将它们添加到所有输入会花费大量时间。
有没有办法明智地应用htmlspecialchars()
或html_escape()
整个网站?
我的意思是即使我使用<input type="text" class="form-control" required="" name="tes_title" value="<?php echo $tes_info['tes_title']; ?>">
它也应该用作<input type="text" class="form-control" required="" name="tes_title" value="<?php echo htmlspecialchars($tes_info['tes_title']); ?>">
答案 0 :(得分:0)
编写便利功能。
<?php
function e($str) {
//return escaped string.
}
并在需要时使用输出:
<?= e($foo) ?>
但是我将它限制在输入输出中。逃离需要的地方并妥善逃脱。
Codeigniter看起来有一个html_escape
辅助函数,它是htmlspecialchars的包装器。它还需要一个数组作为输入。
您可以在传递给视图(在控制器中)之前预处理数据。但它可能变得令人困惑和笨拙 - 你可能不想逃避你传递给视图的一切。
$data = array(
'title' => 'My Title',
'heading' => 'My Heading',
'message' => 'My Message'
);
$escaped = html_escape($data);
$this->load->view('blogview', $escaped);
答案 1 :(得分:0)
您可以为每次提交定义挂钩。
编辑您的application / config / hooks.php文件
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
$hook['post_controller_constructor'][] = array( 'class' => 'SpecialChar',
'function' => 'remove_specials',
'filename' => 'removespecial.php',
'filepath' => 'hooks'
);
在您的功能中,您必须检查表单是否已提交
前:
if ($this->input->post()) {
foreach($this->input->post() as $post)
$newValue = htmlspecialchars($post);
}