Сессии: нажмите, чтобы поднять номер - PullRequest
0 голосов
/ 14 марта 2011

Я хочу создать раздел для голосования, чтобы, когда пользователь щелкает ссылку, он складывал число (ограничение до одного равноправного IP-адреса или что-то подобное).

Например:

Селтикс: 0 (Нажмите, чтобы проголосовать) ----------- этот клик

Лейкерс: 0 (Нажмите, чтобы проголосовать)


Селтикс: 1

Лейкерс: 0


Как это возможно с помощью сессий или только php-кодирования?

есть идеи?

1 Ответ

0 голосов
/ 14 марта 2011

Сеансы могут использоваться для обеспечения немедленной проверки того, было ли проведено голосование:

// if session hasn't voted
if(!$_SESSION['voted']){

    // VOTING LOGIC

    // set session to have voted
    $_SESSION['voted'] = true;

}

Однако одни сеансы не гарантируют, что один пользователь не сможет проголосовать снова (сеансы немедленно теряютсяпосле очистки кэша / файлов cookie браузера) После запуска логики голосования вы захотите сохранить IP-адрес, захваченный с $_SERVER['REMOTE_ADDR'].

// if session hasn't voted
if(!$_SESSION['voted']){

    // if ip address hasn't voted
    if(!$ip_addresses[$_SESSION['REMOTE_ADDR']]){

        // VOTING LOGIC

        // set session and ip address to have voted
        $_SESSION['voted'] = true;
        $ip_addresses[$_SESSION['REMOTE_ADDR']] = true;
    }

}

. IP-адреса не следует извлекать целиком, как этого требует пример.,Вместо этого вам следует запросить внешний носитель (файл / БД), чтобы определить, проголосовал ли данный клиент или нет.Конечно, это всего лишь пример реализации, однако в этом направлении я бы направился к быстрому сценарию для выполнения задачи.Вы также захотите обеспечить освобождение IP-адресов через определенное время, чтобы последующие подключения с одинаковыми IP-адресами, но с разными клиентами могли голосовать.

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

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