2017-09-24 95 views
0

我試圖在cookie中存儲用戶搜索以顯示用戶「最近的搜索」。表單包含2個PARAMS:PHP Cookie存儲用戶表單搜索 - 存儲多個搜索

  1. 關鍵字
  2. 位置

我可以創建的cookie沒有問題,但我不能更新和存儲超過1個搜索。他們在Cookie中以下列格式存儲搜索:

"q=carpenter&l=london&ts=1506177856392:q=bricklayer&l=Southwark&ts=1506008036065:q=labourer&l=Southwark&ts=1506007988029" 

正如您所見,確實存儲了多個UNIQUE搜索。

我使用的PHP沒有人知道如何複製如何確實存儲用戶表單搜索?我需要將查詢作爲一個數組。

感謝

約翰

UPDATE - 代碼嘗試:

if (isset($_COOKIE["RS"])) { 

    // Get cookie value 
    $new = "key=$keyword&loc=$locationKey:"; 
    //"q=carpenter&l=london&ts=1506177856392:q=bricklayer&l=Southwark&ts=1506008036065:q=labourer&l=Southwark&ts=1506007988029" 
    $prev_value = $_COOKIE["RS"]; 

    $prev_value = stripslashes($prev_value); 
    $prev_value = json_decode($prev_value, true); 
    // Add current value to array and set cookie again 

    $prev_value = $prev_value."".$new; 

    $new_value = json_encode($prev_value, true); 

    setcookie('RS', $new_value, time()+3600); 

}else { 

    // Set cookie to current value 
    $init_value = "key=$keyword&loc=$locationKey:"; 
    $init_value = json_encode($init_value, true); 
    setcookie('RS', $init_value, time()+3600); 

} 
+0

和你有什麼企圖? –

+0

先生流行音樂 - 更新的代碼問題試過 –

+0

所以,你要做的是保存多個值? –

回答

0

爲了存儲更多的搜索到一個cookie時,首先你必須從cookie讀取實際值,然後添加新的搜索。

是這樣的:

<?php 
$cookie_name = "searches"; 
$stored_searches = isset($_COOKIE[$cookie_name]) ? $_COOKIE[$cookie_name] : null; 

$new_search_value = "keyword:asdf&location=http://example.com"; 

if($stored_searches){ 

    $searches = explode('|',$stored_searches); 

    $searches[] = $new_search_value; 

    $searches_to_store = implode('|', $searches); 

} else { 
    $searches_to_store = $new_search_value; 
} 


setcookie($cookie_name, $searches_to_store, time() + (86400 * 30), "/"); 

此代碼檢查是否存在您的Cookie,如果是這樣,分析所有搜索到數組。然後將新的搜索和內爆添加到cookie字符串中。 搜索由|分隔(管)字符 然後將其保存..

但我會建議有關搜索這些數據保存到會話值,其存儲在服務器上,並且不能被用戶操縱

$_SESSION['searches'] = $searches_to_store; 

編輯: 只存儲唯一的搜索,可以通過某個鍵將存儲的搜索分配到數組中。

例如像這樣:

//after explode 
$searches_by_key = array(); 
foreach($searches as $search){ 
    list($keyword, $location) = explode('&', $search); 
    $searches_by_key[$keyword] = $search; 
} 

通過這一點,你必須在$ searches_by_key獨特的鍵,你可以存儲到餅乾

希望它幫助;)

+0

吉米,謝謝你,它確實有效!我現在唯一的問題是停止複製表單搜索已添加到Cookie,並只存儲唯一的關鍵字+本地組合 –

+0

我編輯答案包含唯一搜索提示 – Jimmmy