CodeIgniter无法读取任何POST

时间:2015-02-03 09:59:58

标签: php apache .htaccess codeigniter mod-rewrite

无论如何/但是我在CodeIgniter中通过HTML表单发布 - 我的$_POST$_REQUEST数组为空。但是,当方法设置为get时,一切看起来都很好。

我知道我的问题是Apache / .htaccess或URI设置。我在Windows 7上运行XAMPP。

<form method='post' action='auth/login'>
    <input type='submit' name='login' value='TEST' />
</form>

现在在控制器auth中,函数login应该返回

Array( 'login' => 'TEST' );

我得到的是

Array( );

我已经尝试过什么来阅读$_POST

  • 我尝试设置所有 uri_protocol设置。
  • index_page''
  • 上尝试了CodeIgniter配置'index.php'
  • 尝试了很多不同的.htaccess方法。
  • 检查我的apache mod_rewrite是否包含/允许,并且确实如此。
  • 检查允许重写在apache / conf / httpd.conf中的任何地方设置为All
  • 尝试使用$_POST
  • 阅读$this->input->post()
  • 使行动路径绝对,仍然没有。
  • 尝试从外部脚本发布到CodeIgniter index.php

一切都没有结果。我知道问题必须与Apache设置一起导致所有其他文件夹/项目没有.htaccess完美地工作。

所以这里是我尝试的确切的.htaccess内容,这是最好的4me:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L] # returns 404 everywhere.

RewriteRule .* index.php/$0 [PT,L]  # Pages work good!

^^这是最好的(至少我有网页运行)但不是$_POST

对于想要查看控制器(auth.php)代码的人:

class auth extends CI_Controller {
    function __construct() {
        # Parent constructor.
        parent::__construct();
    }    

    function login() {
        # Trying to read post
        print_r($_POST);
        print_r($this->input->post());

        # Loading form.
        $this->load->view('login_page');
    }
}

2 个答案:

答案 0 :(得分:0)

尝试此操作删除您的操作并添加enctype

<form name="login" id="login" action="" method="post" enctype="multipart/form-data">
    <input type='submit' name='login' value='TEST' />
</form>

并在您的控制器中

在当前操作中添加以下代码。

 if($this->input->post()){
    echo "<pre>";print_r($this->input->post());die;
    }

答案 1 :(得分:0)

好的,这是我案例中的解决方案:

我对CI_Model进行了覆盖,以便始终检查是否有$this->input->post('login'),如果是,请检查是否已发布用户&amp;通过验证。如果它不验证redirect登录页面。 redirect正在清除我的所有帖子。

感谢所有试图提供帮助的人,我道歉。