gpt4 book ai didi

PHP/CodeIgniter - $_POST 数据在奇怪的情况下在提交表单时完全消失

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:42:37 26 4
gpt4 key购买 nike

编辑:我想我已经解决了一些问题。 - 这个角色 - - 似乎要打破它。如果我使用“常规”撇号 ( ' ) 它似乎工作正常,如果我将其中的每个时髦的撇号​​替换为常规撇号,它提交就很好。那么,下一个问题:为什么那个花哨的撇号会破坏 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');
}

}

到目前为止一切正常,是吗?这就是疯狂问题的开始。

  • 我可以“手动”在内容字段中输入任何我喜欢的数据。我单击提交,一切都按预期工作 - 数据库使用我的新数据更新,一切都很好。
  • 我可以将 15 段 Lorem Ipsum 或其他任何内容复制并粘贴到该字段中。点击提交,万岁。
  • 但是: - 我正在尝试从客户站点复制粘贴内容,特别是此页面:http://jeremywebbphotography.com/biog.php - 我正在更新他的网站,因为从那时起我的网络开发技能有了很大提高。 奇怪的地方 - 在复制粘贴后点击保存,表单重新加载,我得到错误“内容字段是必需的”,我的复制粘贴进场消失。
  • 如果我在网络模式下运行 WebKit Inspector 并捕获表单提交请求,我可以清楚地看到我在 $_POST 数组中复制粘贴的文本...
  • 但是,如果我开始我的 edit_page函数 die("Content is ".$_POST['content']); - 它已经自行清除。输出字面意思是“内容是”。就这样。
  • 以上与 title 的预期一样有效字段 - 它只影响内容。
  • 我猜想在复制的内容中可能有一些有趣的特殊字符或其他原因导致这种情况发生(即使没有)- 但如果你复制粘贴它,然后删除一切直到第一个词“Biog”,然后提交(所以你实际上是在提交一行),同样的事情仍然发生!

WTF 正在进行中?!

我已经确认不是的事情:

  • 我的浏览器(Mac OS X Snow Leopard 上的最新 Chrome Dev - 在 Safari 和 Firefox 中试过,同样的问题)
  • CI XSS 过滤或安全清理 - 关闭这些,运气不好
  • CI 表单验证。我也已将其关闭。
  • 我要提交的数据(某种程度上)- 请参阅最后的描述性要点。
  • 还尝试运行 htmlspecialcharshtmlentities通过表单验证规则,没有雪茄。

感谢您的帮助。澄清一下,这是我如何复制粘贴它的屏幕截图:

How I'm copy-pasting

(没什么复杂的,对吧?)- 最后,提交后实际页面输出的快速截图(抱歉 CSS 专家,我正在努力):

How it looks

最佳答案

不确定这是否有帮助,但请尝试使用 $this->input->post('postvar') 而不是 $_POST['postvar']。我相信 CodeIgniter 使用此函数来正确清理和编码发布数据。

关于PHP/CodeIgniter - $_POST 数据在奇怪的情况下在提交表单时完全消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6396571/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com