這裡我們拿網上商城源碼ecshop中的相關代碼來說明,怎麼用cookie來實現用戶商品歷史浏覽記錄。
代碼如下:
//如是COOKIE 裡面不為空,則往裡面增加一個商品ID
if (!empty($_COOKIE['SHOP']['history'])){
//取得COOKIE裡面的值,並用逗號把它切割成一個數組
$history = explode(',', $_COOKIE['SHOP']['history']);
//在這個數組的開頭插入當前正在浏覽的商品ID
array_unshift($history, $id);
//去除數組裡重復的值
$history = array_unique($history);
// $arr = array (1,2,3,1,3);
// $arr = array (1,1,2,3,3);
// $arr = array (1,2,3);
//當數組的長度大於5裡循環執行裡面的代碼
while (count($history) > 5){
//將數組最後一個單元彈出,直到它的長度小於等於5為止
array_pop($history);
}
//把這個數組用逗號連成一個字符串寫入COOKIE,並設置其過期時間為30天
setcookie('SHOP[history]', implode(',', $history), $cur_time + 3600 * 24 * 30);
}else{
//如果COOKIE裡面為空,則把當前浏覽的商品ID寫入COOKIE ,這個只在第一次浏覽該網站時發生
setcookie('SHOP[history]', $id, $cur_time + 3600 * 24 * 30);
}
//以上均為記錄浏覽的商品ID到COOKIE裡,下面將講到怎樣用這樣COOKIE裡的數據
//取得COOKIE裡的數據 ,格式為1,2,3,4 這樣,當然也有可以為0
$history =isset ($_COOKIE['SHOP']['history']) ? $_COOKIE['SHOP']['history'] : 0;
//寫SQL語句,用IN 來查詢出這些ID的商品列表
$sql_history = "SELECT * FROM `goods` WHERE `goods_id` in ({$history})";
//執行SQL語句,返回數據列表
$goods_history = $db->getAll($sql_history);
if ($goods_history) {
$tpl->assign ('goods_history',$goods_history);
}
主要是通過操作數組來實現的,用到一些操作數組的函數。
*