我今天大部分时间都在努力解决为什么我的CodeIgniter应用程序返回空$_POST
(以及$this->input->post(<var>)
和php://input
) - 我减少了应用程序到单个表单输入元素的完全最小的示例并回显$_POST
。
根据要求,文件(但据我所知,这与我为什么缺少.htaccess
规则阻止通过框架提交POST数据的问题无关):
控制器是这样的:
<?php
class Form extends CI_Controller {
public function __construct() {
parent::__construct();
$this->load->helper('form');
$this->output->enable_profiler(TRUE);
}
public function form_show() {
$this->load->view("form");
}
public function data_submitted() {
$data['user_name'] = $this->input->post('u_name');
$this->load->view("form-success", $data);
}
}
?>
表单(.php)是:
<html>
<head></head>
<body>
<?php
echo form_open('Form/data_submitted');
echo form_label('User Name :', 'u_name');
$form_data = array('name' => 'u_name');
echo form_input($form_data);
$submit_data = array(
'type' => 'submit',
'value'=> 'Submit',
);
echo form_submit($submit_data); ?>
echo form_close();
if(isset($user_name)){
echo "<p>".$user_name."</p>";
} ?>
</body>
</html>
form-success(.php)是
<?php var_dump($this->_ci_cached_vars); ?>
<html>
<head></head>
<body>
<?php print_r($_POST); ?>
</body>
</html>
然后我意识到我的根文件夹中没有.htaccess - 所以恢复了CodeIgniter的默认.htaccess文件
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
但我无法确定哪一个(或为什么)允许将POST数据传递给控制器,但删除这些规则并不允许。任何人都可以对此有所了解,我们将非常感激,以帮助满足我的好奇心!