当在if语句中比较$ this-> session-> userdata('username')的值时,if else语句将始终转到else部分

时间:2013-01-24 08:24:07

标签: codeigniter

我们一直在开发一个系统,我们只是发现了这种错误,我们尝试了一些我们认为在逻辑上正确但我们总是指向其他部分的条件。在我们的系统中,我们已将系统中用户电子邮件日志记录的每个值分配给this->session->userdata('username')。当某个用户使用自己的电子邮件帐户登录时,$this->session->userdata('username')的值自动是该用户登录的电子邮件。但是,如果我使用其他用户电子邮件更改了网址中的电子邮件,我就是因此,我们所做的就是if语句部分的条件。这是代码:

public function get_course()
{

   if($this->session->userdata['username']==$this->uri->segment(3)) {

      $data=$this->data;

      $tennant_url_id=$this->uri->segment(3);

      if(!empty($tennant_url_id)) {
         $tennant_code=$tennant_url_id;
      } else {
         $tennant_code=$this->session->userdata('username');
      }

      $num_row=$this->session->userdata('total_row');
      $total_row=$this->course_booking_model->check_tennant($tennant_code);
      $data['tennant_id'] = $tennant_code;
      $data['total_row']=$total_row;
      $data['data']=$this->course_booking_model->get_all_courses($tennant_code);
      $this->load->view('view_course_admin',$data);

   } else {
      $this->session->set_flashdata('Sess_expire', 'Your session has expired! Please Login again.');

      redirect("/admin/logout");
   }
}

当我更改网址中的电子邮件然后我退出时,它工作正常。但是,如果我点击我的页面的任何链接或刷新页面而不更改网址中的电子邮件,则始终执行else部分并将其定向到注销页面。任何人都可以弄清楚这里有什么问题吗?非常感谢

1 个答案:

答案 0 :(得分:0)

首先,

if($this->session->userdata['username'] == $this->uri->segment(3))

应该是:

//not square brackets but regular brackets
if($this->session->userdata('username') == $this->uri->segment(3))