簡體   English   中英

如何將會話數據存儲到Codeigniter中的數據庫中?

[英]How to store session data into database in Codeigniter?

在這種情況下,數據庫“ users”和“ posts”中有2個表。 第一個表擴展了基本的用戶數據(ID,名,姓,用戶名,郵件,密碼等)。第二個表是關於帖子(ID,標題,文本,作者等)的。

因此,當用戶創建帖子時,他需要填寫標題字段和文本字段,作者字段應使用直接從會話中提取並存儲到db的用戶名填充。

有不同的方法可以做到這一點,但我建議-不要在會話中存儲任何用戶數據。 當用戶首次登錄時-創建一個“令牌”,它是一個長隨機字符串,其結尾可能帶有日期時間以供參考。 使用令牌更新用戶表,並將令牌保存到會話中。

當用戶轉到另一個頁面時-您從會話中獲取令牌-並使用該令牌從數據庫中返回用戶記錄。 然后,您將擁有所需的所有用戶詳細信息。 這將使您擺脫在會話中存儲任何用戶等詳細信息的習慣。 這對於安全性而言要好得多,並且可以使您的系統更易於長期處理。 否則,您必須在用戶進行任何更改時都必須更新用戶數據庫表和會話。

這里最好的選擇也許是將SESSION數據存儲在數據庫本身中。

看看https://www.codeigniter.com/userguide3/libraries/sessions.html 您將需要在數據庫中創建一個名為ci_sessions的表(或在配置文件中可重命名),然后可以根據需要從會話中提取用戶名。

如果磁盤上的會話專用框等有效,則可以很好地存儲在磁盤上(AFAIK),並且您可以完全控制代碼。 當您位於共享框中時,就不能依賴它們。

登錄時,創建一個將放入Cookie和會話數據庫的事物數組; 一個例子

if (password_verify($pass1, $stored))
    {
      $data = array(
        'name'         => $row->name,
        'is_logged_in' => TRUE
      );
      $this->session->set_userdata($data);

該名稱是用戶的db記錄的一部分。 但不屬於登錄名。 當您搜索要登錄的用戶時,名稱是您要包含在查詢中的內容之一

然后,在表單輸入中,只需set_value = $ this-> session-> userdata('name')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM