хранение нескольких значений переменной в cookie и сравнение - PullRequest
0 голосов
/ 04 января 2011

Как я могу сохранить несколько значений для переменной в cookie, используя php, например, $ id = 1,2,4,5 Тогда как я могу сравнить сохраненные значения с переменной?например, $ new_id = 4, я хочу проверить, существует ли значение $ new_id в сохраненных значениях $ id в cookie.Спасибо за помощь и хорошего дня.

Ответы [ 5 ]

3 голосов
/ 04 января 2011

Вы можете хранить произвольные строки в элементах cookie, поэтому сериализованный массив должен работать. Пример:

// To store:
$ids = array(1, 2, 3, 4);
setcookie('ids', serialize($ids));

// To retrieve:
$serialized = $_COOKIE['ids'];
$ids = unserialize($serialized);
// sanity check: $ids needs to be an array.
assert(is_array($ids));

// Now let's check:
if (in_array(4, $ids)) {
    // Yes, it's here.
}

Несколько предостережений:

  • Файл cookie полностью находится в руках клиента, и значениям файлов cookie никогда не следует доверять. Относитесь к ним так же, как к параметрам строки запроса или данным POST.
  • Файлы cookie предлагают очень ограниченное хранилище (стандарт IIRC дает вам 4096 байт для работы).

Имея это в виду, может быть, лучше вместо этого хранить массив в $_SESSION - это даст вам практически неограниченное хранилище, и единственный способ для клиентского приложения возиться со значениями - через ваш код.

0 голосов
/ 04 января 2011

Сохранить массив в cookie, а затем сравнить их

0 голосов
/ 04 января 2011

Вот одно из многих решений (синтаксис может содержать ошибки):

// Create an array with the values you want to store in the cookie
$id = array(1, 2, 3, 4);

// Create cookie
set_cookie('id', implode(',', $id));

// Get cookie
$id = explode(',', $_COOKIE['id']);

// Test value
if(in_array($newId, $id) === true) {
  // Value is in the array
}

Ограничения: Значения, хранящиеся в $ id, не могут включать запятые, выберите другой разделитель, если вам нужно запятую

0 голосов
/ 04 января 2011

Попробуйте следующий фрагмент.

// do Stuff to retrieve value of $id from cookie.

// explode variable to array
$idArr = explode(',' , $id);

// check existence of new_id in cookie variable.
if(in_array($new_id , $idArr)){

// new_id exist in cookie variable

}

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

Спасибо!

Хуссейн.

0 голосов
/ 04 января 2011

для использования кратного значения вы можете использовать массив , а затем для его сохранения вы можете сериализовать десериализовать ) массив.

Для создания массива: $ array = array (1,2,3,4);

Для сравнения: if (in_array (2, $ array)) echo "Yep";

Чтобы сериализовать данные для хранения: $ store = serialize ($ array);

Десять вы сможетесоздать cookie с данными $ store, а затем использовать unserialize ($ store) для преобразования данных в массив.

Руководство по сериализации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...