当我将数据加载到输入框中时:
<input type="text" name='name' value='<?= ($activity->name); ?>' class="form-control">
如果数据包含单引号,则会剥离字符串的后半部分,因为符号冲突
所以我用
修复它<input type="text" name='name' value='<?= htmlspecialchars($activity->name); ?>' class="form-control">
有效。问题是,将它应用到所有输入框中是很繁琐的,对于codeigniter,是否存在全局适用的解决方法?
由于
答案 0 :(得分:3)
你可以使用这两种报价。没有理由使用sinlge /双引号。
<input type='text' name='name' value='<?=($activity->name); ?>' class='form-control'>
<input type="text" name="name" value="<?=($activity->name); ?>" class="form-control">
答案 1 :(得分:2)
使用表单助手:
$data=array(
'class' => 'form-control',
'name' => 'name',
'value' => set_value('name', $activity->name)
);
echo form_input($data);
或者如果你不想逃避任何事情
'value' => set_value('name', $activity->name, false)
答案 2 :(得分:2)
每个问题都有解决方案。
我厌倦了分配配置以及我能做的所有事情。最后为您找到最佳解决方案。现在您不想为所有功能添加htmlspecialchars()
。只需使用下面的代码。
还有一件事在CI中,方法调用
html_escape($var)
也可以阅读
转到 system/core/input.php
(我正在使用CI 3,所以请转到第254行)
更改此
public function post($index = NULL, $xss_clean = NULL)
{
return $this->_fetch_from_array($_POST, $index, $xss_clean);
}
到这个
public function post($index = NULL, $xss_clean = NULL)
{
return htmlspecialchars ($this->_fetch_from_array($_POST, $index, $xss_clean));
}
要使用此表单,方法应为
method="post"
。在控制器中你必须使用$this->input->post('');
。$_POST
不适用于您的。
在视图中(示例表单)
<?php echo form_open('welcome/form'); ?>
<h1>Create Contact Form Using CodeIgniter</h1>
<?php echo form_label('Student Name :'); ?>
<?php echo form_input(array('id' => 'dname', 'name' => 'dname')); ?>
<?php echo form_label('Student Email :'); ?>
<?php echo form_input(array('id' => 'demail', 'name' => 'demail')); ?>
<?php echo form_submit(array('id' => 'submit', 'value' => 'Submit')); ?>
<?php echo form_close(); ?>
在控制器中
echo $this->input->post('dname');
输入是我从w3Schools.com
获取的This is some <b>bold</b> text.
输出为This is some <b>bold</b> text.
答案 3 :(得分:1)
为什么你不引用价值?
<input type="text" name='name' value="<?=($activity->name); ?>" class="form-control">
没有理由使用单引号...
当你保存&#34;名称&#34;在DB中,您可以使用addslahes($ name)...
答案 4 :(得分:1)
我认为对于codeigniter使用它自己的输入文本框语法试试这个,
<?php echo form_input(array("name" => "name", "class" => "form-control input-sm", "value" => $activity['name'])); ?>
答案 5 :(得分:1)
您可以尝试在课程中添加htmlspecialchars
。像
class Activity{
public $name = htmlspecialchars("value");
}