0

当用户登录他们的帐户时,我希望该用户重定向回他们当前访问的页面而不是成员区域部分。

下面是我希望访问者在登录后看到的页面。他们登录后,我希望他们重新定向到以下页面。

http://www.localhost.com/folder/this-is-the-restricted-page

这就是我正在做的事情。我正在添加以下语法的受限页面之一(到上面的 URL)

$current_url = current_url();

$this->session->set_userdata('redirect',$current_url); 

然后在我的函数验证用户之后,我添加了这个语法(如下)

if($this->session->userdata('redirect')){

            redirect($this->session->userdata('redirect'));

        } else {

 $this->session->set_userdata($data);

            redirect('members/members_area',$data);
 } 

上面的语法不起作用。我不确定我做错了什么。有人知道我哪里/哪里出错了吗?

谢谢

PS。下面是我在用户登录时验证的整个功能。

function validate_credentials(){
   $this->load->model('Members_data');
   $query = $this->Members_data->validate_users();
    if($query){
    $id = $this->Members_data->get_member_ID($this->input->post('username'));
    $email = $this->Members_data->get_member_email($this->input->post('username'));
    $data = array(
       'username' => $this->input->post('username'),
    'id' => $id,
    'email' => $email,
    'is_logged_in' => TRUE
     );

        if($this->session->userdata('redirect')){

              redirect($this->session->userdata('redirect'));

              } else {

    $this->session->set_userdata($data);

          redirect('members/members_area',$data);
     }


    } else {
       $this->login();
    }
 } 
4

2 回答 2

2

redirect('members/members_area',$data);是错的。

第二个参数允许您在“位置”或“刷新”重定向 HTTP 标头之间进行选择。您正在将数据传递给它,这当然是行不通的。如果您希望它在下一页上可用,您应该将数据存储在会话中,您已经在这样做了。将该行更改为:

redirect('members/members_area');它现在应该重定向。

于 2013-09-25T23:29:01.080 回答
0

我在玩我自己的问题,我想通了。我所要做的就是在我的 validate_credentials() 函数中添加一行语法。

下面的语法是我的 validate_credentials() 函数的一部分。

    if($this->session->userdata('redirect')){
         // This is the line I was missing
         $this->session->set_userdata($data);

         redirect($this->session->userdata('redirect'));

    } else {

         $this->session->set_userdata($data);

         redirect('members/members_area',$data);
    }

这是我的整个 validate_credentials() 函数。

  function validate_credentials(){
      $this->load->model('Members_data');
      $query = $this->Members_data->validate_users();
       if($query){
          $id = $this->Members_data->get_member_ID($this->input->post('username'));
          $email = $this->Members_data->get_member_email($this->input->post('username'));
          $data = array(
             'username' => $this->input->post('username'),
             'id' => $id,
             'email' => $email,
             'is_logged_in' => TRUE
           );

            if($this->session->userdata('redirect')){

                 $this->session->set_userdata($data);

                 redirect($this->session->userdata('redirect'));

            } else {

                 $this->session->set_userdata($data);

                 redirect('members/members_area',$data);
            } 

       } else {
          $this->login();
       }
    }

下面的语法是我要添加到我的任何“受限”页面的语法。

$current_url = current_url();

$this->session->set_userdata('redirect',$current_url); 
于 2013-09-26T19:10:45.537 回答