POST在CodeIgniter中不起作用,而GET可以正常运行

时间:2019-04-28 06:33:39

标签: php codeigniter codeigniter-3

我在CodeIgniter中遇到POST的问题,如果我切换到GET,则无法正常工作。

登录控制器

public function login_check(){
    print_r($this->input->post());
    if($this->input->post('email')!=NULL){
        echo '1';
    }
    else{
        header('Content-Type: application/json');
        echo json_encode( array('a' => $this->input->post('email')));
}

在配置文件中,CSRF设置为false,而基本URL设置为http://localhost/xyz/

.htaccess

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

路线

$route['api/login-check'] = 'login/login_check';

如果我在邮递员中设置方法GET时设置了$this->input->get('email'),那绝对可以。

我缺少什么?任何帮助,将不胜感激。

编辑:

邮递员的回复:

Array() {"a":null}

1 个答案:

答案 0 :(得分:0)

代码完全按照您的要求执行。

破坏代码就像...

If I get something from $this->input->post('email') then 
     echo '1';
else if $this->input->post('email') is NULL
     then assign NULL to a and return it in a json_encoded array.

按照您的代码进行操作可能意味着...

public function login_check(){
    print_r($this->input->post());
    if($this->input->post('email') == NULL){ // This was != 
        echo '1';
    }
    else{
        header('Content-Type: application/json');
        echo json_encode( array('a' => $this->input->post('email')));
}

唯一的变化是将if语句中的!=更改为==。

其中一个“盯着它看得太久,再也看不到它”的简单逻辑错误:)

一个更好的建议是使用...

public function login_check(){
    print_r($this->input->post());

    if($this->input->post('email')){
        header('Content-Type: application/json');
        echo json_encode( array('a' => $this->input->post('email')));
        exit();
    }
    else {
        // Handle the case where no email was entered.
        echo '1';
    }
}

那应该让您重回正轨。

更新:我已经在邮递员中尝试了此操作(仅安装了),对于POST,您需要像在GET一样在“正文”而不是“标头”下设置键/值,如果您这样做的话也失踪了。