2013-03-06 23 views
0

我對cookies幾乎沒有經驗,所以我不知道該怎麼做。

我有一件T恤衫,每件T恤都有一件$articleID

每次用戶訪問T恤頁面時,我想將$articleID添加到cookie中。 然後將它添加到數組或其他東西,以便稍後可以檢索它。 即使訪問者訪問了兩次相同的$articleID,也不應該有任何重複$articleID

然後在主頁上,我想檢索訪問的最後5個$articleID的列表並顯示該ID的列表。

我該怎麼做?

謝謝!

+0

處有一個循環,您是否考慮使用會話?請看[Cookies vs. Sessions](http://www.tuxradar.com/practicalphp/10/1/0) – 2013-03-06 19:56:57

回答

2

,以存儲Cookie中的數組,你需要序列化,以便檢查,如果這個代碼將有助於

$articles = array(); 

if (isset($_COOKIE["viewed_articles"])) 
    $articles = unserialize($_COOKIE["viewed_articles"]); 

if (! in_array($articleID, $articles)){ 
    $articles[] = $articleID; 
} 
// at the end update the cookies 
setcookie("viewed_articles", serialize($articles)); 
發起會話

我希望這會有所幫助,並在此link

+0

謝謝!看起來像我需要的! – anarchOi 2013-03-07 04:01:48

+0

我剛剛注意到,如果URL中沒有WWW,Cookie將有所不同。即使用戶沒有將WWW放入瀏覽器,是否可以共享相同的cookie? – anarchOi 2013-03-07 07:28:54

1

是這樣的嗎?

<?php 
$article_id = 1; // Whichever article you're currently viewing 
session_start(); 

if (! isset($_SESSION['viewed_articles'])) 
{ 
    $_SESSION['viewed_articles'] = array(); 
} 

if (! in_array($article_id, $_SESSION['viewed_articles'])) 
{ 
    $_SESSION['viewed_articles'][] = $article_id; 
} 
+0

如果會話過期,您的代碼不再工作。 – MIIB 2013-03-06 19:54:50

+0

我暗示來自「cookies」的方法,它不需要持久存儲。不要從根本上改變我的答案。 – landons 2013-03-06 20:10:47

+0

我希望使用Cookie,因爲此功能將用於顯示用戶最近在T恤商店查看的T恤衫的列表。所以即使在會話過期後我也想顯示。 – anarchOi 2013-03-06 21:38:25

0

您是否嘗試過使用Sessions? Cookie會將這些值存儲在用戶計算機上。該數據在每次頁面加載時都會傳輸到您的Web服務器。

會話將數據存儲在服務器端。會話通過將會話ID存儲爲用戶瀏覽器中的cookie來工作,該瀏覽器對應於存儲在服務器上的會話。

如果你正在使用PHP,您可以通過使用

<?php 
session_start(); 
$_SESSION['key'] = 'value'; 
echo $_SESSION['key']; // outputs: value 
?>