ECshop中的session機制理解

2022-07-17 23:36:15 字數 2945 閱讀 8929

在網上找了發現都是來之一人之手,也沒有用自己的話去解釋,這裡我就拋磚引玉,發表一下自己的意見,還希望能得到各界人士的指導批評!

此session機制不需要session_start初始化,這個我一直不太清楚還得專家詳解。自認為此種機制是建立在cookie基礎上的模擬session,先用$globals['_session']

=array();初始化session,然後在cookie中引入session,如$this->session_id

= $_cookie[$this->session_name]。

最近在做ecshop和ucenterhome的二次開發,有幸接觸到了ecshop的session機制,個人認為這種機制相比php自帶的

點.<?php

class cls_session

function cls_session(&$db, $session_table,

$session_data_table, $session_name = 'ecs_id', $session_id =

'')else

if (!empty($globals['cookie_domain']))

else

//這裡稍微提一下,如果你使用的是https連線,那麼這裡需要設定為true

if (!empty($globals['cookie_secure']))

else

$this->session_name      

= $session_name;

$this->session_table     

= $session_table;

$this->session_data_table =

$session_data_table;

$this->db  =

&$db;

$this->_ip = real_ip();

//如果先前cookie中已經儲存了sessionid則將他的值賦給session_id屬性

if ($session_id == '' &&

!empty($_cookie[$this->session_name]))

else

if ($this->session_id)

else

}$this->_time = time();

if ($this->session_id)

else

register_shutdown_function(array(&$this,

'close_session'));

}//生成乙個唯一的session_id

function gen_session_id()

//對cookie中的session_id做crc32校檢

}//如果資料庫中對應cookie內session_id的記錄已經不存在,則建立一條對應的空記錄

function insert_session()

')");

}function load_session()

else

else

else}}

}function update_session()

//轉義session的值用於安全入庫

$data = addslashes($data);

if (isset($data))

//更新session個字段的值,主要作用是更新expiry這個字段,以此來判斷使用者是否處於活動狀態

return $this->db->query('update ' .

$this->session_table . " set expiry = '" .

$this->_time . "', ip = '" .

$this->_ip . "', userid = '" . $userid . "', adminid

= '" . $adminid . "', user_name='" . $user_name . "', user_rank='"

. $user_rank . "', discount='" . $discount . "', email='" . $email

. "', data = '$data' where sesskey = '" .

$this->session_id . "' limit 1");

}//register_shutdown_function將呼叫這個函式進行session的更新和刪除過期資料的操作

function close_session()

if ((time() % 2) == 0)

return true;

}function delete_spec_admin_session($adminid)

else

}//清空$_session

function destroy_session()

$this->db->query('delete from ' .

$this->session_data_table . " where sesskey = '" .

$this->session_id . "' limit 1");

return $this->db->query('delete from

' . $this->session_table . " where sesskey = '" .

count(*) from ' . $this->session_table);}}

?>

ecshop中的瀏覽歷史

今天看了看 ecshop 中的瀏覽歷史的 分析了一下,有什麼不對的地方,歡迎指出糾正,不勝感激.不難看出,在你每次瀏覽一件商品的同時,會在左側中記錄您的瀏覽記錄,在ecshop中是通過cookie來記錄的,在goods.php裡可以查到如下 if empty cookie ecs history s...

ecshop中的瀏覽歷史

今天看了看 ecshop 中的瀏覽歷史的 分析了一下,有什麼不對的地方,歡迎指出糾正,不勝感激.不難看出,在你每次瀏覽一件商品的同時,會在左側中記錄您的瀏覽記錄,在ecshop中是通過cookie來記錄的,在goods.php裡可以查到如下 if empty cookie ecs history s...

修改ECSHOP中的會員

會員對於我們的 有很深遠的影響,擁有一群粘性使用者是成功的關鍵,那麼我們如何去吸引會員註冊然後轉化會員為高階會員呢,比如我們可以讓所有會員都成為vip會員,對於vip會員,顯示相對優惠的 而對於匿名購買的使用者就沒有優惠。在ecshop中會員是有等級的,那麼我們可以根據會員的等級設定不用的優惠,顯示...