PHP Cookies - хранит 2 фрагмента данных в одном куки - PullRequest
0 голосов
/ 31 января 2012

У меня есть 2 части данных, относящихся к одной и той же теме, являющихся кодом страны и страны.

Например: Австралия и Австралия

Есть ли предпочтительный способ хранения 2 частей данных водно печенье?Или лучше просто использовать 2 куки.

Извините, если это глупые вопросы ... Просто интересует мнение других людей.

thx

Ответы [ 4 ]

1 голос
/ 31 января 2012

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

$cookeString = $country . '+' . $countryCode;

list($country, $countryCode) = explode('+', $cookieString);

Но, честно говоря, это не делаетсмысл хранить код страны и страны, просто храните код страны и ищите данные страны, используя код страны в качестве ключа.

0 голосов
/ 31 января 2012

Вы также можете установить массив файлов cookie, используя обозначение массива в имени файла cookie.

Код PHP -

// set the cookies
setcookie("cookie[one]", "cookie1");
setcookie("cookie[two]", "cookie2");
setcookie("cookie[three]", "cookie3");

// after the page reloads, print them out
if (isset($_COOKIE['cookie'])) {
    foreach ($_COOKIE['cookie'] as $name => $value) {
        $name = htmlspecialchars($name);
        $value = htmlspecialchars($value);
        echo "$name : $value <br />";
    }
}

Вывод:

один: cookie1
два: cookie2
три: cookie3

0 голосов
/ 31 января 2012

Вы можете сделать это несколькими способами, либо несколькими cookie-файлами, либо сохранить объект типа JSON, либо вы можете просто поместить строку, разделенную чем-то вроде :: например, и функцию eplode пользователя php. В целом, это вопрос предпочтения и зависит от того, что вы делаете. Если вы используете объект JSON, вы можете легко переключаться между объектом и массивом, используя json_encode и json_decode. Опять же все зависит от того, где ваш уровень комфорта. В общем, если вы действительно хотите работать с массивом данных, если вы действительно хотите сохранить его в одном файле cookie.

Пример:

<?php
//set the cookie
$cookieData = json_encode(array("value_one", "value_two"));
setcookie("MyCookie", $cookieData , time()+3600);

//read the cookie
$cookieInfo = json_decode($_COOKIE['MyCookie']);
echo $cookieInfo[0]."<br>";
echo $cookieInfo[1]."<br>";

//or
for($i = 0; $i < count($cookieInfo); $i++)
{
   echo $cookieInfo[$i]."<br>";
}

Вы можете сделать эту концепцию довольно большой, но в виду, что куки-файлы легко манипулировать на стороне клиента, поэтому проведите санитарную обработку переменных cookie-файлов, прежде чем запускать их через сценарий, который можно внедрить и сломать для других нужд, например, проверка базы данных на предмет использования действует через информацию cookie.

Еще одна вещь, которую следует помнить, это то, что некоторые браузеры имеют размер cookie, максимальный размер которого составляет всего 4 КБ.

Кроме того, вы можете немного поумнеть с логикой использования JSON и массивов. Сначала они будут хитры, если вы с ними не знакомы, но как только вы начнете их использовать и поймете, вы обнаружите, что они ваши лучшие друзья.

0 голосов
/ 31 января 2012

Почему бы не использовать javascript и создать объект json?

var cc = {
australia: 'au',
India : 'In'
}

Вы можете использовать как cc.India

Я знаю, вы спрашивали о файлах cookie, но мне нужно было хранить коды страни я так и сделал.Это быстро и просто.

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