使用codeigntier将单引号或双引号插入数据库

时间:2016-07-12 02:45:02

标签: php html codeigniter input htmlspecialchars

当我将数据加载到输入框中时:

<input type="text" name='name' value='<?= ($activity->name); ?>' class="form-control">

如果数据包含单引号,则会剥离字符串的后半部分,因为符号冲突

所以我用

修复它
<input type="text" name='name' value='<?= htmlspecialchars($activity->name); ?>' class="form-control">

有效。问题是,将它应用到所有输入框中是很繁琐的,对于codeigniter,是否存在全局适用的解决方法?

由于

6 个答案:

答案 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');

输入&amp;输出

输入是我从w3Schools.com

获取的This is some <b>bold</b> text.

input

输出This is some <b>bold</b> text.

Output

检入

  1. GitHub(推荐)

答案 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");
}