Codeigniter $ this-> input-> post总是FALSE

I am trying to send an httpRequest to a codeigniter controller function. I am using the REST console to test the function . I am trying to send 3 POST variables .

  • UserName
  • Email
  • UserID

Here's the code to handle the request

public function NewUser()
{
    if($this->input->post())
    {
        $FID        = $this->input->post('UserID');
        $UserName   = $this->input->post('UserName');
        $Email      = $this->input->post('Email');
        echo "working";
        echo $FID;
        echo $UserName;
    }
    else
    {
        echo "not working";
    }
}

But this doesn't work. It always output's not working. When I change everything to geteverything starts working fine.

What could be the issue ? Post Request is not working anywhere throughout this codeigniter project.

EDIT

I created a new script, with the following code.

<?php

  var_dump($_POST);
  echo $_POST['UserName'];
  echo $_POST['FacebookID'];
  echo $_POST['Email'];
  echo "********************************";
?>

It is saying undefined index . What could be the issue ? Please help. It works fine for $_GET

you should try

isset($_REQUEST) or !empty($_REQUEST)

to check data is coming or not

$this->input->post() is obliviously return the false because you are not mentioning the name of which value you want to retrieve using post.Make changes here in your code :

if(isset($_POST))

or

  if(!empty($_POST))

See POST

you can also do this:

if($this->input->post('username'))//username is the name of post variable

Try

if( count($this->input->post()) > 0 )
{

}
else
{

}

I had a similar problem. Due to using internationalization, URLs get redirected from user/login to user/en/login. When that redirect happens, the POST array gets lost.

I am not sure if this is your problem as well, but check if your page redirects after submission.

To get the method in codeigniter 3 (docs) you can use the following code:

echo $this->input->method(TRUE); // Outputs: POST
echo $this->input->method(FALSE); // Outputs: post
echo $this->input->method(); // Outputs: post

example:

public function NewUser()
{
    if($this->input->method() === 'post')
    {
        $FID        = $this->input->post('UserID');
        $UserName   = $this->input->post('UserName');
        $Email      = $this->input->post('Email');
        echo "working";
        echo $FID;
        echo $UserName;
    }
    else
    {
        echo "not working";
    }
}

In Codeigniter we can check which HttpRequest it is using 2 below Input class' method :

1. server('REQUEST_METHOD')

$this->input->server() is identical to Core PHP's $_SERVER variable.

example:

if ($this->input->server('REQUEST_METHOD') == 'GET') {
   echo "It's GET Request";
} else if ($this->input->server('REQUEST_METHOD') == 'POST') {
   echo "It's POST Request";
}  

2. method()

Since Codeigniter 3 we can use method() also for checking request type.

method([$upper = FALSE])

Parameters: $upper (bool) – Whether to return the request method name in upper or lower case

Returns: HTTP request method

Return type: string

explanantion: It Returns the $_SERVER['REQUEST_METHOD'], with the option to set it in uppercase or lowercase.

example:

echo $this->input->method(TRUE); // Outputs: POST
echo $this->input->method(FALSE); // Outputs: post
echo $this->input->method(); // Outputs: post