访问表单数据
使用 POST、GET、COOKIE 和 SERVER 数据
CodeIgniter 提供了几个辅助方法来从 POST、GET、COOKIE 和 SERVER 数组中获取数据。 使用这些方法来获取数据而不是直接访问数组($_POST[‘something’])的最大的好处是, 这些方法会检查获取的数据是否存在,如果不存在则返回 NULL 。这使用起来将很方便, 你不再需要去检查数据是否存在。
- 换句话说,通常你需要像下面这样做:
$something = isset($_POST['something']) ? $_POST['something'] : NULL;
- 使用 CodeIgniter 的方法,你可以简单的写成:
$something = $this->input->post('something');
- 主要有下面几个方法:
$this->input->post()
$this->input->get()
$this->input->cookie()
$this->input->server()
本文主要介绍在CodeIgniter框架中如何获取get和post参数。
获取get数据
在PHP主流的框架中,CI中url的pathinfo传递参数是一个特殊情况,它没有使用传统pathinfo的’c/m/key/value’
这种模式,而是在URI类中封装了segment这个方法,假设uri为/index.php/welcome/index/phpjyz/5,在控制器中调用如下
echo $this->uri->segment(3);//输出phpjyz
echo $this->uri->segment(4);//输出5
echo $this->uri->segment(1);//welcome
值得注意的是,在控制器中使用$_GET[‘phpjyz’]是得不到5这个值的。
另外,针对get参数还可以在控制的动作(方法)加参数,例如
class Welcome extends CI_Controller {
public function index($id=0, $name=’’){
echo
i
d
.
id.
id.name;
}
}
上面在index方法里加了两个参数
i
d
和
id和
id和name,有默认值表示该参数可选,uri的格式如下
index.php/welcome/index/5/phpjyz
这里传入参数的顺序不能颠倒。
获取post数据
在CI控制其中可以直接使用PHP中的$_POST[‘key’]来获取post数据;
另外CI还封装了一个Input类,里面提供post方法来获取post提交过来的数据。
$this->input->post('key');
GET和POST也可以混合获取
get_post($index[, $xss_clean = NULL])
该方法和 post_get() 方法一样,只是它先查找 GET 数据:
$this->input->get_post('some_data', TRUE);