|
|
|
| Господа, объясните пожалуйста как можно реализовать записную книжку в доске объявлений для не прошедших регистрацию пользователей. Т.е. приходит пользователь на сайт смотрит объявления и на понравившихся объявлениях нажимает добавить в записную книжку, после этого данные (т.е. ID объявления) должны записываться в кукисы, своеобразный массив. Вот как это реализовать, т.е. ввод и вывод из кукисов и насколько это правильно использовать кукисы? | |
|
|
|
|
|
|
|
для: Ruthless
(19.04.2009 в 21:20)
| | Установка кукисов выполняется с помощью функции setcookie()
Чтение - из суперглобального массива $_COOKIE
Применение вполне оправданно.
Хранить, очевидно, придется список ID'ов. | |
|
|
|
|
|
|
|
для: Trianon
(19.04.2009 в 22:24)
| | Уважаемый Trianon, простите за то что не правильно сформулировал свой вопрос. Попытаюсь объяснить что мне нужно. Когда посетитель нажимает на объявлении ссылку "В записную книжку" нужно чтобы ID объявления запоминалось в кукисах, с одним объявлением все понятно, делаем строчку:
setcookie("id", "$id_ob", time()+60*60*24*30);
|
и все, а вот как загнать несколько ID объявлений в кукисы? Я так понимаю это нужно в цикле делать и обратно, как вытаскивать эти данные из кукисов? | |
|
|
|
|
|
|
|
для: Ruthless
(20.04.2009 в 08:50)
| | А как много вы собираетесь хранить этих самых id обьявлений?
Может лучше в кукисах хранить id пользователя + пароль автоматически выдаваемых сервером, а всю остальную информацию хранить на сервере подобно зарегистрированным пользователям? | |
|
|
|
|
|
|
|
для: Valick
(20.04.2009 в 09:24)
| | Все что касается пользователей у меня хранится в базе, а смысл всего этого в том чтобы пользователь мог отложить заинтересовавшие его объявления как бы в записную книжку и потом при следующем посещении мог заново их просматривать. Т.е. хочу сделать тоже самое как сделано в газете бесплатных объявлений ИРР. | |
|
|
|
|
|
|
|
для: Ruthless
(20.04.2009 в 09:33)
| | Что бы что-то отложить для зарегистрированного пользователя кукисы не нужны (имхо).
А "не зарегистрированных" Вам всё равно нужно будет отделять одного от другого - это в любом случае какой-то id (его-то я и предлогаю хранить в кукисах, а не перекачивать туда сюда всё остальное + естественно пароль). Плюс к этому не зареганного юзера в любой момент можно зарегистрировать сохранив при этом все объявления и всё что угодно, а обработка всех данных будет одинаковая как для зарегистрированных так и для "не зарегистрированных" пользователей. | |
|
|
|
|
|
|
|
для: Valick
(20.04.2009 в 10:37)
| | Сейчас записная книжка работает следующим образом:
В заголовке страницы создается кукис
$hash=md5($_SERVER['HTTP_USER_AGENT'].substr(ip2long($_SERVER['REMOTE_ADDR']),0,6));
setcookie("ident_user", "$hash", time()+60*60*24*30);
|
Далее когда посетитель жмет ссылку "Добавить в блокнот" следующий код записывает уникальный идентификатор посетителя и №ID объявления в базу MySQL
if ($act=="noute") {
$id = intval($_GET['id']);
$querynoute = mysql_query("SELECT COUNT(*) from users_noute WHERE ident_user='{$_COOKIE['ident_user']}' AND id_ob='$id'") or die(mysql_error());
$colnoute = mysql_result($querynoute, 0, 0);
if ($colnoute==0) {
$rimenoute = "INSERT into users_noute (ident_user, id_ob) VALUES ('{$_COOKIE['ident_user']}', '$id')";
$result = mysql_query($rimenoute);
echo "<script>history.go(-1)</script>";
}
else {
echo "<script>history.go(-1)</script>";
}
}
|
вот сама таблица:
id ident_user id_ob
41 1370e46cd98d68defd07eeb6af3ef88c 1
42 1370e46cd98d68defd07eeb6af3ef88c 71
43 fef63e4cda35e8f63e37c7e5d46e919c 1
44 fef63e4cda35e8f63e37c7e5d46e919c 71
45 fef63e4cda35e8f63e37c7e5d46e919c 72
46 fef63e4cda35e8f63e37c7e5d46e919c 73
47 1370e46cd98d68defd07eeb6af3ef88c 72
|
Но существует одно "НО" которое меня не устраивает, в базу то это складируется, но со временем база распухнет ведь эти данные не вычищаются пока сам пользователь не очистит свою записную книжку. Поэтому я и хотел писать ID в кукисы пользователя, чтобы база не засорялась этими записями. | |
|
|
|
|
|
|
|
для: Ruthless
(20.04.2009 в 08:50)
| | $id_arr = array(3, 5, 15);
$id_list = implode(',', $id_arr);
setcookie("id", $id_list, time()+60*60*24*30);
$id_list = $_COOKIE['id'];
$id_arr = explode(',', $id_list);
Фигня с хешем, которую вы тут придумали - совершенно ненужная ересь.
Полагаться, что записи из БД будут исчезать лишь потому, что Вы кому-то насуете кукис - наивно.
В записях так или иначе нужно будет хранить время устаревания, и их по достижении этого времени удалять. | |
|
|
|