Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Вопрос по Cookies


Автор: Гость_Dima 29.2.2004, 19:45
Хочу поставить проверку на Cookies для защиты от повторных голосований на каждой статье. Т.е. пользователь может давать оценки всем статьям, кроме тех по которым он уже голосовал. Я так понял нужно использовать Cookies в виде массива:
Код

if (isset($_COOKIE['cookie'])) {

foreach ($_COOKIE['cookie'] as $name => $value) {
 if (in_array("$id", $_COOKIE['cookie'])) {
 echo "Вы уже оценили эту статью";
 exit;
}
}

}

setcookie("cookie[$id]", "id", time()+3600);

// ниже идет скрипт подсчета и записи рейтинга в БД

где $id - уникальный идентификатор каждой статьи
Но такая проверка не получается - голос засчитываеться всегда, и в том числе, если уже голосовал.

Что тут неправильно?

Автор: IZ@TOP 29.2.2004, 20:16
Не буду разбираться, а приведу код как бы я это решил.

Цитата


if(isset($_POST['vote_action'])) {
    $id = $article_id; // Берем идентификатор статьи.
    if(!isset($_COOKIE['article_voted'][$id])) { // Если нет индекса с таким id то заносим делаем следующее
        setcookie("article_voted[{$id}]", true); // Записываем новый индекс к article_voted и ставим ему любое значение.
        // А тут пишем в базу что за эту статью проголосовали.
        ...
    } else {
        die("Вы уже голосовали"); // Если есть такой индекс у массива значит голосовал тип.
    }
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)