在笨/ PHP多个会话(Multiple Sessions in Codeigniter/PHP)

2019-07-31 03:30发布

我正在开发具有笨会话一个电子商务网站的以下内容:

  1. 管理员登录
  2. 购物车
  3. 用户登录

现在我无法找出一个机制,用于管理与不同的数据集这三个会议。

我知道它可以与会话名称()在PHP核心来实现。 但随着笨我有点困惑。 用Google搜索了很多,但无法找到一个合适的回答。

我想在笨多个会话有清醒的认识,使其不产生在未来的任何混乱。 补习的任何链接将是巨大的。

Answer 1:

$this->session->set_data('admin',$array_of_admin_data);
$this->session->set_data('user',$array_of_user_data);
$this->session->set_data('cart',$array_of_cart_data);

然后检索每个SEESION数据? 运用

$this->session->userdata('admin');

为什么难道不这项工作?



Answer 2:

CodeIgniter的会议是从本地的PHP会话完全不同,它是存储在数据库中尤其是在非常安全的。 你可以用CodeIgniter的会议工作和Native PHP会议,他们将很好地工作在一起,因为PHP会看到不同的变量。 如果你想检查一个笨会话值使用的存在

if(isset($this->session->userdata['course_id']))
{
    $this->data['course_id'] = $this->session->userdata('course_id');
} 

虽然本机PHP会是什么样子

if(isset($_SESSION['course_id']))
{
    $this->data['course_id'] = $_SESSION['course_id'];
} 


Answer 3:

我也在开发一个电子商务系统,并有同样的问题。 我不喜欢管理存储在数据库中的序列化数据,尤其不适合推车/篮子的所有数据,因为这使得它很难查询数据库,我只是觉得它有点凌乱。

我是很新的CI和计算器,但我的想法是建立ci_session表,因为它是写在文档 ,从而保持CI会话的一致性和安全性。 然后,我只是一个参考ID添加到会话varialbe你要管理每个会话的数据。 例如,对于购物车:

$unique_cart_id = random_string('unique');
$this->session->set_userdata('cart_id', $unique_cart_id);

现在我引用我的cart_id在一个单独的“菜篮子” - 表的所有数据。 例如:

CREATE TABLE basket (
  id int(11) NOT NULL auto_increment,
  cart_id varchar(32) default NULL,
  timestamp timestamp NULL default NULL,
  price float(10,2) default NULL,
  title varchar(100) default NULL,
  serialized_data text,
  product_id int(11) default NULL,
  PRIMARY KEY  (id)
)

现在每次有人想要的东西添加到购物篮我从会话变量中的cart_id:

$cart_id = $this->session->userdata('cart_id');

并存储$cart_id与其他任何车数据一起在我的“菜篮子” -表,写一点点插入脚本。

$data = array(
   'cart_id' => $cart_id,
   'title' => $product_title,       
   'product_id' => $product_id,
   'price' => $price,
   'serialized_data' => serialize(array('what ever you need else'))
);

$this->db->insert('basket', $data); 

现在,如果有人想要观赏篮我只是取回$cart_id再次从会话变量和查询它的cart_id匹配的数据库。

$this->db->query("SELECT * FROM basket WHERE cart_id = ?", array($cart_id));

并使用了你的其他会话数据,管理员和用户登录的原理相同。 因此,我只保留有每个用户一个会话Cookie,但我可以在数据库中分别管理每个类型的会话数据。

这是想法只是一个粗略的分类。 我希望它帮助。



Answer 4:

随着userdata()方法,你可以检索你创建会话期间保存的字段。

例如,您通过$array_of_admin_data array ,它拥有像一些信息userType 。 如果你想检索此值,则必须调用userdata()是这样的:

$this->session->userdata('userType');

希望这有助于。



文章来源: Multiple Sessions in Codeigniter/PHP
标签: codeigniter