codeigniter表单POST在View中从Controller清空

Don*_*Den 13 php forms .htaccess post codeigniter

我正在使用Codeigniter.我创建了一个HTML表单,将数据发布到Controller.

此表格工作正常但突然停止发布数据.

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>
Run Code Online (Sandbox Code Playgroud)
  1. 我试图检查浏览器中的数据帖子,它显示我在输入框中输入的数据.

在此输入图像描述

  1. 在我的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; 
Run Code Online (Sandbox Code Playgroud)

结果:

CONTENT_TYPE:application/x-www-form-urlencoded

字符串'order1 = 26&item1 ='

array(size = 23)
'order1'=> string'26'(length = 2)
'item1'=> string''(length = 0)

但是当我在控制器中打印$ _POST时,我得到以下内容:

Array
(
    [order1] => 
    [item1] =>
)
Run Code Online (Sandbox Code Playgroud)
  1. 我的.htaccess代码如下:

    RewriteEngine on
    
    RewriteCond $1 !^(index\\.php|resources|robots\\.txt)
    
    RewriteCond %{REQUEST_FILENAME} !-f
    
    RewriteCond %{REQUEST_FILENAME} !-d
    
    RewriteRule ^(.*)$ index.php/$1 [L,QSA]
    
    Run Code Online (Sandbox Code Playgroud)

有人能告诉我这是什么问题吗?当数据传递给控制器​​时,我无法找到原因,它变为空.该应用程序成功运行了一年多,但我突然遇到了这个问题.

先感谢您.如果您需要更多帮助我,请告诉我.

注意:我想出了一旦加载页面,如果我将输入时间的名称编辑为其他名称,那么数据就会成功发布.

即:而不是order1,如果我使用chrome中的inspect元素将我的编辑更改为" neworder "然后如果我提交,则数据会向控制器提交值.不知道为什么?

更新:我发现有些奇怪.在浏览器的set-cookie中.它就像一整页垃圾.

每次调用页面时我都会开始一个新的会话,但我不会杀死现有的会话.那是问题吗?

即使我摧毁旧会话并启动新会话,我也会在浏览器中获得设置cookie.它有一个..但在我的情况下,我在浏览器中获得了超过6套cookie.

JP.*_*let 5

根据这个CI github帖子问题https://github.com/bcit-ci/CodeIgniter/issues/242,它可能是RewriteRule的.htaccess问题:

如果使用Apache服务器,那么应​​该启用mod重写,否则重定向将是正确的但是空$ _POST.

&

如果您的URL上没有尾部斜杠,则服务器将发送301重定向,这将干扰POST数据.

你的问题可能与

RewriteRule ^(.*)$ index.php/$1 [L,QSA]
Run Code Online (Sandbox Code Playgroud)

尝试更改为:

RewriteRule ^(.*)$ index.php/$1 [PT,L]
Run Code Online (Sandbox Code Playgroud)

(来自:无法在codeigniter中获取帖子表单提交值)或尝试设置:

sudo a2enmod rewrite
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你!