Codeigniter如果缺少URL段

时间:2011-07-18 18:26:28

标签: php security function codeigniter

在发现第3个URL段可以直接传递给函数的参数后,我做了以下几点。

网址示例:

  

http://www.mysite.com/profile/user/64

profile控制器中的功能:

function user($user_id) //$user_id is 3rd URL segment
{
   //get data for user with id = $user_id
}

使用$this->uri->segment(3)返回FALSE不存在任何段。使用函数参数我得到

  

缺少参数1

如果缺少第3个URL段,如何返回FALSE并且不执行该功能?如果可能的话,我正在寻找一个没有if语句的简单解决方案。

4 个答案:

答案 0 :(得分:4)

你得到“缺少参数1”,因为函数没有得到参数。

尝试

function user(){
    if($this->uri->segment(3)){
        //get data for user with id = $this->uri->segment(3)
    }
}

答案 1 :(得分:3)

默认参数怎么样:

function user($user_id = FALSE) //$user_id is 3rd URL segment
{
   //get data for user with id = $user_id
}

答案 2 :(得分:2)

你也可以使用它:

 public function user($id = null)
 {
   if(!isset($id))
     exit();

   // get data for user with id = $id
 }

或者

public function user()
{
  if( ! $this->uri->segment(3) )
    exit();

  // get data for user with id = $id
}

答案 3 :(得分:0)

if ($this->uri->segment(3)) {
  return true
} else {
  return false
}