在網上找了發現都是來之一人之手,也沒有用自己的話去解釋,這裡我就拋磚引玉,發表一下自己的意見,還希望能得到各界人士的指導批評!
此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中會員是有等級的,那麼我們可以根據會員的等級設定不用的優惠,顯示...