0

我们一直在开发一个系统,我们刚刚发现了这种错误,我们尝试了我们认为在逻辑上正确的条件,但我们总是针对 else 部分。在我们的系统中,我们已将登录系统的用户电子邮件的每个值分配给this->session->userdata('username'). 当某个用户使用他自己的电子邮件帐户登录时,该值的值自动$this->session->userdata('username')是登录该用户的电子邮件。但是,如果我使用其他用户电子邮件更改 url 部分中的电子邮件,我将被定向到该帐户,所以我们做了什么,我们在 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");
   }
}

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

4

1 回答 1

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))
于 2013-01-24T08:46:09.613 回答