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 .
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 get
everything 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 :
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";
}
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