我正在尝试将用户搜索存储在Cookie中以向用户显示“最近搜索”。表格包含2个参数:
我可以创建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);
}
答案 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
中希望它有所帮助;)