我正在尝试将httpRequest发送到codeigniter控制器函数。我正在使用REST控制台来测试该功能。
我正在尝试发送3 POST
个变量。
以下是处理请求的代码
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";
}
}
但这不起作用。它始终输出not working
。当我将所有内容更改为get
时,一切都会正常运行。
可能是什么问题?此请求codeigniter project
中的帖子请求无效。
修改
我使用以下代码创建了一个新脚本。
<?php
var_dump($_POST);
echo $_POST['UserName'];
echo $_POST['FacebookID'];
echo $_POST['Email'];
echo "********************************";
?>
这是undefined index
。可能是什么问题 ?请帮忙。它适用于$_GET
答案 0 :(得分:7)
$this->input->post()
无意中返回false,因为您没有提到要使用post检索哪个值的名称。在代码中更改此处:
if(isset($_POST))
或
if(!empty($_POST))
请参阅POST
你也可以这样做:
if($this->input->post('username'))//username is the name of post variable
答案 1 :(得分:5)
你应该试试
isset($_REQUEST)
要么
!empty($_REQUEST)
检查数据是否来了
答案 2 :(得分:2)
尝试
if( count($this->input->post()) > 0 )
{
}
else
{
}
答案 3 :(得分:2)
要在codeigniter 3(docs)中获取该方法,您可以使用以下代码:
echo $this->input->method(TRUE); // Outputs: POST
echo $this->input->method(FALSE); // Outputs: post
echo $this->input->method(); // Outputs: post
示例:
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";
}
}
答案 4 :(得分:0)
我有类似的问题。由于使用国际化,URL将从用户/登录重定向到user / en / login。当重定向发生时,POST数组就会丢失。
我不确定这是否也是您的问题,但请检查您的网页在提交后是否重定向。
答案 5 :(得分:0)
在Codeigniter中,我们可以使用HttpRequest
类下的 2'方法来检查哪个Input
:
server('REQUEST_METHOD')
$this->input->server()
与Core PHP的$_SERVER
变量相同。
示例:
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()
自Codeigniter 3起,我们也可以使用method()
来检查请求类型。
方法([$ upper = FALSE])
参数: $ upper(布尔)–是否以 大写或小写
返回请求方法名称返回: HTTP请求方法
返回类型:字符串
说明::它返回$_SERVER['REQUEST_METHOD']
,并可以选择将其设置为大写或小写。
示例:
echo $this->input->method(TRUE); // Outputs: POST
echo $this->input->method(FALSE); // Outputs: post
echo $this->input->method(); // Outputs: post