Имеется ссылка вида: PHP: <a href='?cookie=".$com['id']."'>Favorit</a> Стоит на цикле, и каждый раз значение id меняется, соответственно и параметр в $_GET['cookie'] варьируется. При нажатии на ссылку, срабатывает: PHP: if(isSet($_GET['cookie'])) { $fav = $_GET['cookie']; setcookie("favorite", "$fav", time()+9999999); $_COOKIE['favorite'] = "$fav"; if(isSet($_COOKIE['favorite'])) { $id_vul = $_COOKIE['favorite']; $fav_query = mysql_query("SELECT * FROM joomla WHERE id=$id_vul"); $div_fav = mysql_fetch_array($fav_query); echo $div_fav['title']; } } Сам скрипт по задумке, должен накапливать значения в cookie, потом выводить их если они есть, сейчас же скрипт работает только с одним значением. Пожалуйста, подскажите реализацию данного скрипта заточенного под несколько значений и их вывод.
куки это ключ-значение. Соответственно твой код постоянно перезаписывает значение для ключа fav. 2 выходна (если рассматривать только куки). выход 1. писать для каждого фейворита отдельную куку, типа: PHP: setcookie("favorite:$fav", "1", time()+9999999); $_COOKIE['favorite:'.$fav] = 1; И читать их форычем, как предложили выше: PHP: foreach($_COOKIE AS $k=>$v) { if (substr($k, 0, 4)=='fav:') { $favorite=substr($k, 4); } выход 2. писать в куку favorite серилизованный массив, либо (предпочтительно) json массив кук. Код писать лень ) но смысл —*получаем массив из куки favorite, дописываем его новым элементом, и пишем json в куку обратно. Оба способа имеют одно и то же «НО», спецификация куков не позволяет хранить более 20 кук для домена. И каждая не может быть больше 4 килобайт. Т.е. в первом случае мы быстро упрёмся в количество кук, во втором в размер. По факту современные браузеры дают возможность писать сколько угодно кук любой длинны. Но я бы не рисковал и писал бы подобную инфу в базу. Если там прям нагрузка, то в мемкеш или подобное. Но не в куки
Спасибо за отклики, не могу понять вот, что: почему происходит substr($k, 0, 4)=='fav:', ведь по моему префикс "favorite:"? Второе, почему мой, да и выше приведенные примеры работают, только тогда, когда существует $_GET['cookie'], ведь по идеи эта GET должна существовать только один раз, и присваивать свое значение кукам? А сейчас же, работает так: если site.com/?cookie=ляля, есть то выполняет echo $_COOKIE, если нет get переменной cookie, то соответственно не выполняет вывод кук
Да, my bad, substr($k, 0, 9)=='favorite:' echo не выполняется, потому, что у тебя сначала проверка isset($_GET['cookie']), а уже внутри на наличие куки. Т.е. if(isset($_COOKIE)) вынеси за блок if(isset($_GET))