繁体   English   中英

登录codeigniter后将url重定向到请求的页面

[英]redirect url to requested page after login codeigniter

登录时遇到问题。 当我点击一个链接时,如果我没有登录,它会将我重定向到登录页面,成功登录后它应该重定向我请求的 url,但它会将我重定向到个人资料页面。 这是我的视图文件:

<!--Left cols-->
<?php error_reporting(0);?>
<div class="col-lg-8 col-sm-8 col-md-8">
<div class="reg-form">
<h2>Member's Login</h2>
<title>Login</title>
<form method="post" action="<?php echo base_url();?>index.php/register_step1/login">

<div class="row">
<label for="name">Email</label>
<span><i class="icon-name"></i><input type="email" placeholder="example@gmail.com" required id="name" name="email"/></span>
</div>

<div class="row">
<label for="pass">Your Password</label>
<span><i class="icon-pass"></i><input type="password" placeholder="*************" id="pass" required name="password"/></span>
</div>
<!--input type="hidden" name="redirurl" value="<?php echo $_SERVER['HTTP_REFERER']; ?>" /-->
<div class="row">
Forgot Password <a href="">click here</a> / <a href="">Register</a> new user
</div>

<div class="row">
<input type="submit" value="Login" name="submit"/>
</div>

</form>
</div>
</div>
<?php $this->load->view("home_template/rightbar");?>

这是我的控制器:

public function login(){
        $this->load->model("User_model");
        $this->load->library('user_agent');

        if(isset($_POST["submit"])){ 
            //$url = $this->input->post("redirurl");
                $data = $this->User_model->login();
                if($data){
                    foreach($data as $dta){
                        $id = $dta->id;
                        $email = $dta->email;
                    }

                    $session_array = array("id"=>$id,"email"=>$email);
                    $this->session->set_userdata("logged_by_login",$session_array);

                    redirect("profile");

                }
            }
                else{

                }


        $data["main_content"] = "login_view";
        $this->load->view("home_template/template",$data);
    } 

你可以像这样使用重定向。 可能是控制器没有得到正确的路径,

$this->load->helper('url');
redirect(base_url('profile'));

如果它不起作用,请告诉我。

  • 对于页面重定向,我们在codeigniter中使用了redirect()语句。 redirect()使用重定向头语句将用户发送到指定的网页。

  • redirect()语句驻留在URL帮助器中,因此我们需要加载url helper:

    $这个 - >负载>帮手( 'URL');

  • 配置文件页面重定向我们写下波纹管语句并将第一个参数作为“配置文件”传递,最后一个参数是“刷新/位置”。

    重定向( '轮廓', '刷新');

  • 重定向函数加载函数调用的第一个参数中指定的本地URI,并使用配置文件中指定的选项构建。

  • 第二个参数允许开发人员使用不同的HTTP命令来执行重定向“位置”或“刷新”。

  • 根据Code Igniter文档:“位置更快,但在Windows服务器上有时会出现问题。” 所以最好使用“refresh”作为第二个参数

将您的代码更改为

取消注释您的代码“ /-->

改成

<!input type="hidden" name="redirurl" value="<?php echo $_SERVER['HTTP_REFERER']; ?>" />

并在您的控制器更改代码中,如下所示

if($data){
                foreach($data as $dta){
                    $id = $dta->id;
                    $email = $dta->email;
                }

                $session_array = array("id"=>$id,"email"=>$email);
                $this->session->set_userdata("logged_by_login",$session_array);

                redirect("profile");
                 if(!empty($this->input->post('redirurl'))){
                        redirect($this->input->post('redirurl'),'refresh'); 
                    }else{
                        redirect('profile','refresh'); 
                    }

            }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM