Поиски формы пользователя хранилища PHP Cookie — несколько сохраненных поисков

Я пытаюсь сохранить пользовательский поиск в файле cookie, чтобы показать пользователям «Недавние поиски». Форма содержит 2 параметра:

  1. Ключевое слово
  2. Место нахождения

Я могу создать cookie без проблем, но я не могу обновить его и сохранить более 1 поиска. Действительно, они сохраняют результаты поиска в Cookie в следующем формате:

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

Как видите, действительно храните несколько уникальных поисков.

Я использую 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

Решение

Чтобы сохранить больше поисковых запросов в одном файле 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;
}

при этом у вас будет уникальный ключ в $ search_by_key, который вы можете сохранить в cookie

Надеюсь, поможет 😉

0

Другие решения

Других решений пока нет …