在安装 codeigniter 时,我正在尝试使用内置$this->input->post('some_data')
函数,但$this->input->post()
它是一个空数组。
Aprint_r($_POST)
是否完整且正确地给出了所有变量?
根据codeigniter docs,输入类“由系统自动初始化,因此无需手动执行”,让我想知道我还打算做什么。
关于我应该如何尝试使其正常工作的任何想法?
谢谢!
在安装 codeigniter 时,我正在尝试使用内置$this->input->post('some_data')
函数,但$this->input->post()
它是一个空数组。
Aprint_r($_POST)
是否完整且正确地给出了所有变量?
根据codeigniter docs,输入类“由系统自动初始化,因此无需手动执行”,让我想知道我还打算做什么。
关于我应该如何尝试使其正常工作的任何想法?
谢谢!
如果您的视图看起来像这样(正确),您可以检查:
<form method="post" action="/controller/submit/">
vs(不起作用):
<form method="post" action="/controller/submit">
这里的第二个是不正确的,因为它重定向而不携带 post 变量。
解释:
当 url 末尾没有斜线时,表示 this 指向一个文件。
现在,当 Web 服务器查找该文件时,它会发现这确实是一个目录,并在最后向浏览器发送一个重定向,并带有一个斜杠。
浏览器使用斜杠对新 URL 进行新查询,但不发布表单内容。这就是表单内容丢失的地方。
试试这个,改变
$config['base_url'] = 'http://mywebsite.cl/';
至
$config['base_url'] = 'http://www.mywebsite.cl/';
大多数情况下,某些提供商会自动将 www 、 https 等添加到您的网址中,这会导致此问题
使用$this->input->post()
初始化表单助手。您可以在 config.xml 中默认执行此操作。
您可以寻求一些帮助来解决此问题。
核心 CodeIgniter 文件中是否有任何更改或扩展。检查system/core/Input.php
是否为原始副本以及其他文件的内容application/library
和内容application/core
其他输入法有用吗?在您的电话旁边运行时会产生什么结果print_r
?
echo $this->input->user_agent();
输出什么数据print_r
?寻找application/config/config.php
线路$config['global_xss_filtering']
。这是设置为TRUE
还是FALSE
?如果TRUE
跨站点脚本过滤器可能与您发布的数据有问题(我认为这不太可能)
更改您的表单操作,
由此:
<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 "
从 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>
我的问题是 ajax 调用。我正在使用这个:
type: 'posts',
代替
type: 'post',
语法,D'oh!
您缺少父构造函数。加载控制器时,您必须在控制器构造函数中调用父 CI_Controller 类构造函数
问题是$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!
}
今天终于把问题解决了。问题出在.htaccess
文件上。
自学:必须更彻底地阅读 CODEIGNITER 文档。
要查看所有帖子值,请尝试var_dump($this->input->post(ALL));
解决如下:
以下是否排除将在控制器上运行 $ this-> input-> post ('name' ) 的重定向 .htacess ,在我的情况下它运行良好。
腹肌,何塞·卡马戈]