Codeigniter将参数从视图传递到控制器

时间:2013-12-14 17:27:53

标签: codeigniter anchor parameter-passing

view有这个锚:

echo anchor('login', 'Login or Register');

如何将当前网址发送到我的控制器登录?然后在另一个名为login_validation的函数上使用它?

我想要的只是登录并返回到最后一个网址,但无效。所以我想当我点击“登录或注册”然后登录后保存当前网址,在功能login_validation上,我应该重定向到保存的网址...

控制器索引

public function index(){

    $this->main_login();

}

main_login

public function main_login(){

        $this->load->helper('url');
        // on view i will call the next function login_validation
        $this->load->view("view_login");

}

login_validation

public function login_validation(){

    $this->load->library('form_validation');

    (...)

    if ($this->form_validation->run()){

            // i should redirect the saved url here, instead of home
            redirect('home');

     }else{
        (...)
     }



  }

我感谢任何帮助

2 个答案:

答案 0 :(得分:0)

您只需在控制器类$this->agent->referrer()中使用main_login()即可完成此操作。

将引荐来源网址保存到您的会话中,一旦用户通过验证(或,如果),则从会话中提取该字符串:

<_>在main_login()中:

// grabs url where you clicked login
$this->session->set_userdata('referrer_url', $this->agent->referrer()); 
在login_validation()中

// pull url from session and redirect, make sure to account for not having url too
redirect( $referrer_url );

答案 1 :(得分:0)

我为延迟道歉,我真的很忙于学期结束,

所以我将解释我是如何解决这个问题的,我想要的只是在登录后回到当前页面..所以,每当我打开我的视图登录时,我将保存最后一页的URL,使用以下代码:< / p>

$refering_url = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '' ;

然后我应该将它保存在我的会话中,所以我可以从我的控制器访问并将用户重定向到最后一页,但是看,我不能简单地保存每次访问视图登录时的URL,beucase every时间我错过了密码,我将被重定向到登录页面,所以最后的网址,登录而不是最后一个,当然是错误的,所以我们必须在会话中保存它,但仅限于第一个我们访问视图登录的时间,为此,我将上面的变量($ refering_url)与视图登录进行比较并查看登录验证,如果不一样,我可以确认上一页是我登录前的那一页,然后我可以将它保存到我的会话中,

这里是比较,以及我会话中保存的最后一个网址:

if (($refering_url != ‘URL TO VIEW LOGIN‘) && 
    ($refering_url != ‘URL TO LOGIN VALIDATION){

        $this->session->set_userdata('url', $refering_url);

    }

登录验证后,在控制器上,我应该将用户重定向到他所在的最后一页(会话中保存的网址),为此我使用了这段代码:

$this->session->set_userdata($data);
$url=$this->session->userdata('url');
redirect($url, 'refresh');