PHP Cookie存储用户表单搜索 - 存储多个搜索

时间:2017-09-24 11:42:25

标签: php cookies cookiestore

我正在尝试将用户搜索存储在Cookie中以向用户显示“最近搜索”。表格包含2个参数:

  1. 关键字
  2. 位置
  3. 我可以创建cookie没问题,但我无法更新它并存储超过1个搜索。 Indeed.co.uk他们以下列格式将搜索存储在Cookie中:

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

    正如您所见,确实存储了多个UNIQUE搜索。

    我正在使用PHP有没有人知道如何复制如何存储用户表单搜索?我需要将查询作为数组。

    由于

    约翰

    更新 - 代码尝试:

    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);
    
    } 
    

1 个答案:

答案 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;
}

通过这个,您将在$ searching_by_key中拥有唯一的密钥,您可以将其存储到cookie

希望它有所帮助;)