【发布时间】:2016-06-15 20:39:40
【问题描述】:
我正在使用 Codeigniter。我创建了一个将数据发布到控制器的 HTML 表单。
此表单运行良好,但突然停止发布数据。
HTML:
<form name="frm_search" id="frm_search" method="post" action="http://ip/free/index.php/taskdetails/tabOne/1/ShibNo/asc/">
<input id="order1" name="order1" value="26" type="text" >
<input id="item1" name="item1" value="" type="text" >
</form>
- 我试图检查浏览器中的数据发布,它显示了我在输入框中输入的数据。
- 在我的 index.php 中,我放置了以下代码以查看是否已发布:
echo "CONTENT_TYPE: " . $_SERVER['CONTENT_TYPE'] . ""; $data = file_get_contents('php://input'); echo "DATA: <pre>"; var_dump($data); var_dump($_POST); echo "</pre>"; exit;
结果:
CONTENT_TYPE: application/x-www-form-urlencoded
字符串'order1=26&item1='
数组(大小=23)
'order1' => 字符串'26'(长度=2)
'item1' => 字符串'' (长度=0)
但是当我在控制器中打印 $_POST 时,我得到以下信息:
Array
(
[order1] =>
[item1] =>
)
-
我的.htaccess代码如下:
RewriteEngine on RewriteCond $1 !^(index\\.php|resources|robots\\.txt) RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L,QSA]
谁能告诉我这是什么问题?我无法找出为什么当数据传递到控制器时它变为空。应用程序成功运行了一年多,但我突然遇到了这个问题。
提前谢谢你。如果您需要更多帮助,请告诉我。
注意:我发现一旦页面加载完毕,如果我将输入的名称编辑为其他名称,那么数据就会成功发布。
ie: 而不是 order1,如果我在 Chrome 中使用检查元素将我的编辑名称更改为“neworder”,那么如果我提交,数据以价值提交给控制器。不知道为什么?
更新:我发现有些奇怪。在浏览器的 set-cookie 中。这就像一整页的垃圾。
每次调用页面时,我都会启动一个新会话,但不会终止现有会话。那是问题吗?
即使我销毁旧会话并启动新会话,我也会在浏览器中获得 eh set-cookies。它对我来说是一个.. 但在我的情况下,我在浏览器中设置了 6 个以上的 cookie。
【问题讨论】:
-
也许你在某处使用 order1
-
什么 CodeIgniter 版本?是否开启了 XSS 过滤?尝试制作
order1 = HELLO。echo $this->input->post('order1');产生了什么? -
你有一些 jQuery 在运行
$('#order1').val('');或类似的页面上吗? -
没有类似的东西。我厌倦了给出不同的值,但仍然没有答案。是的,页面中有 Jquery,但没有订单验证。
-
@TomPHP 请您显示完整的视图文件以及控制器吗?输入字段的重复名称会发生这种问题吗?而且,是ajax请求吗?
标签: php forms .htaccess codeigniter post