为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
烙印99 2021-05-05 14:21:10
我在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';如果我$this->input->get('email')在邮递员中设置方法GET时进行设置,那绝对可以。我缺少什么?任何帮助,将不胜感激。编辑:邮递员的回复:Array() {"a":null}
查看完整描述

1 回答

?
温温酱

TA贡献1752条经验 获得超4个赞

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


代码分解就像...


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一样在“正文”而不是“标头”下设置键/值,如果那也是您所缺少的。


查看完整回答
反对 回复 2021-05-21
  • 1 回答
  • 0 关注
  • 160 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信