当我创建重定向库时,我发现了这种错误我将其命名为 redirector.php 我也已在 autoload.php
这是我的 redirector.php
class Redirector{
protected $CI;
public function __construct(){
//needed for every libraries
$this->CI =& get_instance();
$userid = $this->CI->session->userdata('userid');
if(isset($userid)){
redirect('/rey');
}else{
redirect('/log_in');
}
}
}
这是我的 log_in控制器
if($check){
$arr = array(
'userid' => $check->id,
'username' => $username,
'password' => $password
);
$this->session->set_userdata($arr);
//redirect('/rey','refresh');
}else{
echo "<p>User does not exist</p>";
}
P.S我在库中制作时遇到这种错误但是如果我把这段代码放在每个构造函数中除了 log_in.php 之外的每个文件我没有收到错误
$userid = $this->session->userdata('username');
if(empty($userid)){
redirect('/log_in','refresh');
}
编辑
我的索引中的重定向没有错误 log_in 但是如果我设置会话它没有重定向到rey.php这就是我所做的。
if(empty($userid) && $this->CI->uri->segment(1) != 'log_in'){
redirect('/log_in');
}else{
if(isset($userid) && $this->CI->uri->segment(1) === 'log_in'){
redirect('/rey');
}
}
答案 0 :(得分:3)
您的redirector.php
将在所有控制器之前运行..因此代码重定向将在您的登录控制器之前运行..因此它将重定向太多次。检查每个控制器上的登录更好。
如果您仍想使用此库,请将代码更改为此..
class Redirector{
protected $CI;
public function __construct(){
//needed for every libraries
$this->CI =& get_instance();
$userid = $this->CI->session->userdata('userid');
if(empty($userid) && $this->CI->uri->segment(1) != 'log_in'){
redirect('/log_in');
}
if(!empty($userid) && $this->CI->uri->segment(1) == 'log_in'){
redirect('/rey');
}
}
}