[英]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.