20

在安装 codeigniter 时,我正在尝试使用内置$this->input->post('some_data')函数,但$this->input->post()它是一个空数组。

Aprint_r($_POST)是否完整且正确地给出了所有变量?

根据codeigniter docs,输入类“由系统自动初始化,因此无需手动执行”,让我想知道我还打算做什么。

关于我应该如何尝试使其正常工作的任何想法?

谢谢!

4

13 回答 13

30

如果您的视图看起来像这样(正确),您可以检查:

<form method="post" action="/controller/submit/">

vs(不起作用):

<form method="post" action="/controller/submit">

这里的第二个是不正确的,因为它重定向而不携带 post 变量。

解释:

当 url 末尾没有斜线时,表示 this 指向一个文件。

现在,当 Web 服务器查找该文件时,它会发现这确实是一个目录,并在最后向浏览器发送一个重定向,并带有一个斜杠。

浏览器使用斜杠对新 URL 进行新查询,但不发布表单内容。这就是表单内容丢失的地方。

于 2013-05-28T16:00:48.063 回答
5

试试这个,改变

$config['base_url'] = 'http://mywebsite.cl/';

$config['base_url'] = 'http://www.mywebsite.cl/';

大多数情况下,某些提供商会自动将 www 、 https 等添加到您的网址中,这会导致此问题

于 2017-09-08T20:40:59.357 回答
4

使用$this->input->post() 初始化表单助手。您可以在 config.xml 中默认执行此操作。

于 2013-02-25T06:19:53.910 回答
1

您可以寻求一些帮助来解决此问题。

  1. 核心 CodeIgniter 文件中是否有任何更改或扩展。检查system/core/Input.php是否为原始副本以及其他文件的内容application/library和内容application/core

  2. 其他输入法有用吗?在您的电话旁边运行时会产生什么结果print_r

    echo $this->input->user_agent();

  3. 输出什么数据print_r?寻找application/config/config.php线路$config['global_xss_filtering']。这是设置为TRUE还是FALSE?如果TRUE跨站点脚本过滤器可能与您发布的数据有问题(我认为这不太可能)

于 2012-09-11T21:25:55.750 回答
1

更改您的表单操作,

由此:

<form method="post" action="<?=base_url()?>yourprocess">

进入这个:

<form method="post" action="<?=base_url()?>index.php/yourprocess">

基本上,您只需要在 base_url() 之后添加“index.php”:

action=" http://www.yourdomain.com/index.php/yourprocess "

于 2018-06-02T02:52:56.827 回答
1

从 2.2.x 升级到 3.0.x - 原因 post 方法失败。如果要升级 CI 3.x,需要将 index_page 保留在配置文件中。还要检查 .htaccess 文件中的 mod_rewrite。CI_3.x

$config['index_page'] = ''; // ci 2.x
$config['index_page'] = 'index.php'; // ci 3.x

我的 .htaccess

<IfModule mod_rewrite.c>
 RewriteEngine On
 RewriteBase /
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule . /index.php [L]
</IfModule>

<IfModule !mod_rewrite.c>
 ErrorDocument 404 /index.php
</IfModule>
于 2017-02-17T15:47:43.717 回答
0

利用

var_dump($this->input->post());

请看屏幕截图。 在这里,我正在打印所有后数组值

于 2016-12-17T14:44:04.100 回答
0

我的问题是 ajax 调用。我正在使用这个:

type: 'posts',

代替

type: 'post',

语法,D'oh!

于 2016-07-29T18:39:46.567 回答
-1

您缺少父构造函数。加载控制器时,您必须在控制器构造函数中调用父 CI_Controller 类构造函数

于 2020-11-11T03:35:42.330 回答
-2

问题是$this->input->post()不支持获取所有的 POST 数据,只支持特定的数据,例如$this->input->post('my_post_var').这就是为什么var_dump($this->input->post());为空。

一些解决方案,坚持使用 $_POST 来检索所有 POST 数据,或者从您需要的每个 POST 项目中分配变量,例如:

// variables will be false if not post data exists
$var_1 = $this->input->post('my_post_var_1');
$var_2 = $this->input->post('my_post_var_2');
$var_3 = $this->input->post('my_post_var_3');

但是,由于上面的代码不是很干,我喜欢做以下事情:

if(!empty($_POST)) 
{
    // get all post data in one nice array
    foreach ($_POST as $key => $value) 
    {
        $insert[$key] = $value;
    }
}
else
{
    // user hasen't submitted anything yet!
}
于 2012-10-23T21:36:49.730 回答
-2

今天终于把问题解决了。问题出在.htaccess文件上。

自学:必须更彻底地阅读 CODEIGNITER 文档。

于 2015-12-11T21:01:41.757 回答
-3

要查看所有帖子值,请尝试var_dump($this->input->post(ALL));

于 2013-03-15T11:32:51.203 回答
-3

解决如下:

以下是否排除将在控制器上运行 $ this-> input-> post ('name' ) 的重定向 .htacess ,在我的情况下它运行良好。

腹肌,何塞·卡马戈]

于 2016-01-11T02:15:57.920 回答