0

最近表示した機能をWebサイトに作成しようとしています。アイデアは、最後に表示された3つの製品を表示するボックスが右側のナビゲーションにあるということです。ログに記録する必要はありません。ユーザーがCookieをクリアしても問題はなく、最初からやり直すだけです。

私が調査したところ、これを行うための最良の方法は、Cookie配列を使用することです(5つのCookieを設定したり、Cookieを追加したり、mysqlで何かを実行したりするのではありません)。

私は2つの問題を抱えています:

  1. まず、配列は値を追加し続けます。3つの値で上限を設定し、そこから最も古いものを削除してから、最新のものを追加します。したがって、100、200、300、400、500、600、150の順序で7つの製品ページIDにアクセスした場合、Cookieには値(500、600、150)が保存されます。最初は3つのうち最も古いもので、最後は最も新しいものです。
  2. 次に、配列を使用可能なものに抽出する方法がわかりません。配列は、DBに対してクエリを実行する必要があると思われるID番号です。

これをページに載せると:

COOKIE:  <?php echo $cookie; ?>

私はこれを手に入れます:

COOKIE: a:7:i:0;s:3:"100";i:1;s:3:"200";i:2;s:3:"300";i:3;s:3:"400";i:4;s:3:"500";i:5;s:3:"600";i:6;s:3:"150";}

これは私のコードです:

//set product id
$product_id = [//some stuff here sets the product id]
// if the cookie exists, read it and unserialize it. If not, create a blank array
if(array_key_exists('recentviews', $_COOKIE)) {
    $cookie = $_COOKIE['recentviews'];
    $cookie = unserialize($cookie);
} else {
    $cookie = array();
}

// add the value to the array and serialize
$cookie[] = $product_id;
$cookie = serialize($cookie);

// save the cookie
setcookie('recentviews', $cookie, time()+3600);

最初にCookieに3つの値を保持させ、最も古いものを削除するにはどうすればよいですか?それらのIDをクエリに入れることができるものに抽出するための最良の方法は何ですか?.... str_replace?

これは別の質問を引き起こします。それは、URL、アンカーテキスト、および製品のいくつかの属性をCookieに入れて、php /mysqlで検索しないようにする必要があるということです。

いつものように、よろしくお願いします。

4

1 に答える 1

0

これが私がmyssefを理解することになった答えでした:

// if the cookie exists, read it and unserialize it. If not, create a blank array
    if(array_key_exists('recentviews', $_COOKIE)) {
        $cookie = $_COOKIE['recentviews'];
        $cookie = unserialize($cookie);
            } else {$cookie = array();}

    // grab the values from the original array to use as needed
    $recent3 = $cookie[0];
    $recent2 = $cookie[1];
    $recent1 = $cookie[2];
于 2013-02-03T21:51:46.530 に答える