2017-09-24 96 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