php Codeigniter $this->input->post 总是 FALSE
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/18467021/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Codeigniter $this->input->post is always FALSE
提问by Mj1992
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 .
我正在尝试将 httpRequest 发送到 codeigniter 控制器功能。我正在使用 REST 控制台来测试该功能。我正在尝试发送3 POST
变量。
- UserName
- 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 get
everything starts working fine.
但这不起作用。它总是输出not working
. 当我将一切更改为get
一切时,一切都开始正常工作。
What could be the issue ? Post Request is not working anywhere throughout this codeigniter project
.
可能是什么问题 ?Post Request 在此期间的任何地方都不起作用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
它在说undefined index
。可能是什么问题 ?请帮忙。它适用于$_GET
回答by Harshal Mahajan
$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 :
$this->input->post()
不经意地返回 false,因为您没有提到要使用 post.Make 在代码中检索的值的名称:
if(isset($_POST))
or
或者
if(!empty($_POST))
See POST
见POST
you can also do this:
你也可以这样做:
if($this->input->post('username'))//username is the name of post variable
回答by Himanshu Pandey
you should try
你应该试试
isset($_REQUEST)
or
!empty($_REQUEST)
isset($_REQUEST)
或者
!empty($_REQUEST)
to check data is coming or not
检查数据是否到来
回答by MJ Pakzad
To get the method in codeigniter 3 (docs) you can use the following code:
要获取 codeigniter 3 ( docs) 中的方法,您可以使用以下代码:
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";
}
}
回答by Christian Giupponi
Try
尝试
if( count($this->input->post()) > 0 )
{
}
else
{
}
回答by Kobus Myburgh
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.
我有一个类似的问题。由于使用国际化,URL 会从 user/login 重定向到 user/en/login。当该重定向发生时,POST 数组将丢失。
I am not sure if this is your problem as well, but check if your page redirects after submission.
我不确定这是否也是您的问题,但请检查您的页面在提交后是否重定向。
回答by Haritsinh Gohil
In Codeigniter we can check which HttpRequest
it is using 2 below Input
class' method :
在 Codeigniter 中,我们可以检查HttpRequest
它正在使用以下Input
类的2方法:
1. server('REQUEST_METHOD')
1. server('REQUEST_METHOD')
$this->input->server()
is identical to Core PHP's $_SERVER
variable.
$this->input->server()
与 Core PHP 的$_SERVER
变量相同。
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()
2. method()
Since Codeigniter 3 we can use method()
also for checking request type.
从 Codeigniter 3 开始,我们也method()
可以用于检查请求类型。
method([$upper = FALSE])
方法([$upper = FALSE])
Parameters:$upper (bool) – Whether to return the request method name in upper or lower case
参数:$upper (bool) – 是否以大写或小写形式返回请求方法名称
Returns:HTTP request method
返回:HTTP 请求方法
Return type:string
返回类型:字符串
explanantion:It Returns the $_SERVER['REQUEST_METHOD']
, with the option to set it in uppercase or lowercase.
说明:它返回$_SERVER['REQUEST_METHOD']
,并可选择将其设置为大写或小写。
example:
例子:
echo $this->input->method(TRUE); // Outputs: POST
echo $this->input->method(FALSE); // Outputs: post
echo $this->input->method(); // Outputs: post