笨$这个 - >输入 - >后()空而$ _ POST工作正常(Codeigniter

2019-06-28 05:57发布

在一个笨的安装,我想使用内置的$this->input->post('some_data')功能,但是$this->input->post()是一个空数组。

print_r($_POST)全面正确地给所有的变量?

按照笨文档,输入级,留下我不知道还有什么我的意思做“是由系统自动所以没有必要做手工初始化”。

我应该如何努力得到这个工作有什么想法?

谢谢!

Answer 1:

您可以检查,如果你的观点看起来是这样的(正确的):

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

VS(不工作):

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

这里第二个是不正确的,因为它没有重定向过载后的变量。

说明:

当网址不到底有斜线,这意味着它指向的文件。

现在,当Web服务器查找该文件,它认为,这是一个真正的目录,并发送重定向到浏览器,在末尾的斜杠。

浏览器发出新的查询与斜线新的URL,但不会发布形式的内容。 这就是形式的内容丢失。



Answer 2:

要使用$this->input->post()初始化形式帮手。 你可以在配置做的,默认情况下。



Answer 3:

试试这个,变化

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

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

有些供应商自动加上www,HTTPS等,以您的网址,大部分的时间,这会导致此问题



Answer 4:

已启用的CSRF保护/applicaiton/config/config.php

如果是$this->input->post()将显示为空。 你可能会尝试做$this->input->post('submit')这不应该是空的。



Answer 5:

有几件事情,你可以寻求帮助解决这个问题。

  1. 有什么改变或在核心CodeIgniter的文件得到了扩展。 检查system/core/Input.php是正本和内容application/libraryapplication/core的其他文件

  2. 不要在其他输入法的工作? 当你运行旁边是什么这样的结果print_r电话吗?

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

  3. 哪些数据是从输出print_r ? 在看application/config/config.php为线$config['global_xss_filtering'] 这是设置为TRUEFALSE ? 如果TRUE也许是跨站脚本过滤器与您要发布的数据有问题(这是不可能的,我认为)



Answer 6:

我的问题是与Ajax调用。 我用的是这样的:

type: 'posts',

代替

type: 'post',

语法,D'哦!



Answer 7:

从2.2.x中升级到3.0.x的 - 原因POST方法失败。 如果要升级CI 3.x中,需要保持index_page在配置文件中。 此外,检查mod_rewrite的.htaccess文件。 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>


Answer 8:

改变你的表单操作,

由此:

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

这个:

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

基本上,你只需要你的BASE_URL后添加“的index.php”():

行动= “http://www.yourdomain.com/ 的index.php / yourprocess”



Answer 9:

使用

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

请参阅屏幕截图。 在这里,我priniting所有接线柱阵列值



Answer 10:

终于得到了今天解决了这个问题。 问题是用.htaccess文件。

学会自己: 必须读笨文档更彻底。



Answer 11:

问题是, $this->input->post()不支持获取所有的POST数据,只有特定的数据,例如$this->input->post('my_post_var'). 这就是为什么var_dump($this->input->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!
}


Answer 12:

解决如下:

执行以下操作排除重定向是.htacess将运行在控制器上的$这个 - >输入 - >后(“名称”),在我的情况下,它的工作完美。

ABS,何卡马戈]



Answer 13:

要查看所有岗位价值试试看var_dump($this->input->post(ALL));



文章来源: Codeigniter $this->input->post() empty while $_POST is working correctly