Codeigniter $ this-> input-> post始终为FALSE

时间:2013-08-27 13:35:31

标签: php codeigniter post

我正在尝试将httpRequest发送到codeigniter控制器函数。我正在使用REST控制台来测试该功能。 我正在尝试发送3 POST个变量。

  • 用户名
  • 电子邮件
  • 用户ID

以下是处理请求的代码

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

6 个答案:

答案 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

1。 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";
}  

2。 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