POST не работает в CodeIgniter, в то время как GET работает отлично - PullRequest
0 голосов
/ 28 апреля 2019

Я сталкиваюсь с этой проблемой с POST в CodeIgniter, который не работает, когда я переключаюсь на 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 Ответ

0 голосов
/ 28 апреля 2019

Код работает точно так, как вы просите.

Разрушение вашего кода выглядит как ...

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 вам нужно установить ключ / значение в Body, а не в Headers, как вы делаете это с GET, если вы это сделали также отсутствует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...