Php Codeigniter会话已登录客户到管理员登录
我在Codeigniter中开发了电子商务网站,但我有一个主要问题 在这个站点中,如果我登录到管理面板,而不是从管理面板注销,然后尝试登录到客户面板,那么即使我登录到客户面板,它也会自动重定向到管理面板 您可以在线测试:管理面板链接为 管理员电子邮件:admin@gmail.comPhp Codeigniter会话已登录客户到管理员登录,php,codeigniter,session,logging,Php,Codeigniter,Session,Logging,我在Codeigniter中开发了电子商务网站,但我有一个主要问题 在这个站点中,如果我登录到管理面板,而不是从管理面板注销,然后尝试登录到客户面板,那么即使我登录到客户面板,它也会自动重定向到管理面板 您可以在线测试:管理面板链接为 管理员电子邮件:admin@gmail.com 密码:admin 客户:ali@gmail.com 通过:c%$#@ 下面是我在控制器/登录类中的代码 //admin login public function __construct() {
密码:admin
客户:ali@gmail.com
通过:c%$#@ 下面是我在控制器/登录类中的代码
//admin login
public function __construct()
{
parent::__construct();
if($this->session->userdata('admin_email'))
{
return redirect("admin");
}
}
public function doLogin()
{
$post=$this->input->post();
$this->load->model("Authentication","au");
$data=$this->au->doLogin($post);
if($data)
{
$this->session->set_userdata("admin_email",$data);
return redirect("admin");
}
else
{
$this->session->set_flashdata("failed","Email and Password is not correct");
return redirect("login");
}
}
//customer login
public function do_c_Login()
{
$post=$this->input->post();
$this->load->model("Authentication","au");
$data=$this->au->do_c_Login($post);
if($data)
{
$c_email=$data->c_email;
$c_id=$data->c_id;
$this->session->set_userdata("c_email",$c_email);
$this->session->set_userdata("c_id",$c_id);
return redirect("shop/profile");
}
else
{
$this->session->set_flashdata([
"msg"=>"Email and Password do match",
"class"=>"danger",
"heading"=>"ERROR"
]);
return redirect("shop/login");
}
}
这是controller/admin中的代码
public function __construct()
{
parent::__construct();
if(!$this->session->userdata('admin_email'))
{
return redirect("login");
}
$this->load->model("Order_management","om");
$this->load->model("user_management","um");
$this->load->model("inventory_management","im");
}
以下是客户的店铺代码/登录名
if(!$this->session->userdata('c_email'))
{
return redirect("shop/login");
}
当然会发生,因为您设置了
admin@gmail.com
在会话中
当您离开管理面板时,它仍在会话中
当然会发生这种情况。您需要检查持久用户数据(“管理员电子邮件”)中是否设置了管理员电子邮件地址。在清除此项之前,他们将始终重定向到管理区域,直到您清除此用户数据,但他们未被授权为管理员。您不应该这样做强制重定向。您应该将控制器分为两个控制器:一个用于客户,另一个用于扩展基本控制器的管理员。请详细说明如何解决此问题,但会话中存储变量的电子邮件地址不同,为什么?但会话中存储变量的电子邮件地址不同,为什么?是的,但是你在constract函数中检查会话,每次使用此控制器时,将你重定向到admin pagein admin panel我在constract函数中检查过,但在shop类中有许多其他函数可能不需要登录会话。那么,修复它的最佳解决方案是什么?这取决于你的代码设计,大多数情况下,所有的管理代码都在同一个控制器中,您需要重新设计代码,否则您应该为检查会话定义全局函数,并在每个函数的第一步使用它