Codeigniter $ this-> input-> post()为空,而$ _POST正常工作

Mat*_*ins 17 php post codeigniter

在codeigniter安装上,我试图使用内置$this->input->post('some_data')函数,但是$this->input->post()是一个空数组.

A print_r($_POST)完全正确地给出了所有变量?

根据codeigniter文档,输入类"由系统自动初始化,因此不需要手动执行",让我想知道我还有什么意思要做.

关于我应该如何努力使这个工作的任何想法?

谢谢!

Rau*_*nde 28

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

<form method="post" action="/controller/submit/">
Run Code Online (Sandbox Code Playgroud)

vs(不起作用):

<form method="post" action="/controller/submit">
Run Code Online (Sandbox Code Playgroud)

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

说明:

当url最后没有斜杠时,意味着它指向一个文件.

现在,当Web服务器查找文件时,它会看到,这实际上是一个目录,并在最后使用斜杠向浏览器发送重定向.

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


Ste*_*sen 5

使用$this->input->post() 初始化表单助手。默认情况下,您可以在配置中执行此操作。


小智 5

试试这个,改变

$config['base_url'] = 'http://mywebsite.cl/';
Run Code Online (Sandbox Code Playgroud)

$config['base_url'] = 'http://www.mywebsite.cl/';
Run Code Online (Sandbox Code Playgroud)

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


小智 1

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

  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跨站点脚本过滤器可能对您发布的数据有问题(我认为这不太可能)