编辑:我想我已经解决了一些问题。 - 这个角色 - ’
- 似乎打破了它。如果我使用'常规'撇号('
)它似乎工作正常,如果我用常规撇号替换其中的每个时髦撇号,它提交就好了。那么,下一个问题:为什么这个花哨的撇号会破坏CodeIgniter还是PHP?我会认为这是一个CI错误,但如果我错了,请纠正我。无论如何,这是我最初发布的问题,我仍然会理解为什么会发生这种情况以及我能做些什么呢?
我正在撕掉这头发。这完全是奇怪的,我根本无法解决它。
首先,我有一个基本形式:
<?php $attributes = array('class' => 'form1'); $selected="";
echo form_open('admin/edit_page/'.$page->row('id'), $attributes); ?>
<div>
<?php echo form_error('title'); ?>
<label>Page Title:</label><input type="text" maxlength="100" name="title" value="<?php echo $page->row('title');?>" />
</div>
<div class="textarea">
<?php echo form_error('content'); ?>
<label>Page Content:</label><textarea name="content"><?php echo $page->row('content');?></textarea>
</div>
<div class="no">
<input type="submit" value="Submit"/>
</div>
</form>
接下来,我有相应的CI功能:
function edit_page($id)
{
$this->form_validation->set_rules('title', 'Title', 'trim|required|max_length[50]');
$this->form_validation->set_rules('content', 'Content', 'trim|required');
// If validation has failed...
if ($this->form_validation->run() == FALSE)
{
$data['page'] = $this->gallery_model->get_page($id);
$this->load->view('admin/header');
$this->load->view('admin/editpage', $data);
$this->load->view('admin/footer');
}
else // Validation successful
{
$title = $this->input->post('title');
$content = $this->input->post('content');
$this->gallery_model->edit_page($id, $title, $content);
redirect('admin');
}
}
到目前为止一切都好,是吗?这就是疯狂问题开始的地方。
edit_page
开始我的die("Content is ".$_POST['content']);
功能 - 已经明确了。输出字面上写着“内容是”。就是这样。title
字段一样正常工作 - 它只影响内容。WTF正在进行中?!
我确认的事情不是:
htmlspecialchars
和htmlentities
,没有雪茄。感谢您的帮助。为了澄清,这里是我如何复制粘贴它的截图:
(那里没什么复杂的吧?) - 最后,提交后的实际页面输出的快速截图(抱歉CSS好了,我正在研究它):
答案 0 :(得分:2)
不确定这是否会有所帮助,但请尝试使用$this->input->post('postvar')
代替$_POST['postvar']
。我相信CodeIgniter使用此功能来正确清理和编码后期数据。
答案 1 :(得分:1)
我建议您使用Text Helper库并使用其ascii_to_entities
函数:
$this->load->helper('text');
$content = $this->input->post('content');
$content = ascii_to_entities($content);
的 ascii_to_entities()
强>
将ASCII值转换为字符实体,包括在网页中使用时可能导致问题的高字符和MS字符,这样无论浏览器设置如何,它们都可以一致地显示,或者可靠地存储在数据库中。对服务器支持的字符集有一定的依赖性,因此在所有情况下可能都不是100%可靠,但在大多数情况下,它应该正确识别正常范围之外的字符(如重音字符)。