0

我想制作一个投票部分,以便当用户单击链接时,它会增加一个数字(限制为一个对等 ip 或类似的东西)。

例如:

凯尔特人队:0(点击投票)-----------这个被点击

湖人队:0(点击投票)


凯尔特人队:1

湖人队:0


会话或只是 php 编码怎么可能?

有任何想法吗?

4

1 回答 1

0

会话可用于立即测试是否已进行投票:

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

    // VOTING LOGIC

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

}

但是,单独的会话并不能确保单个用户不能再次投票(清除浏览器缓存/cookie 后会话立即丢失)一旦您的投票逻辑触发,您将需要存储从$_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 地址但不同客户端的后续连接可以投票。

这实际上取决于您想减少多少重复投票。用户注册,以及基于用户帐户的限制 - 或 - 基于需要确认的电子邮件地址的投票限制将更加可靠,但是那里的开销远远超过我在这里和现在可以描述的。

于 2011-03-14T01:51:37.513 回答