我想制作一个投票部分,以便当用户单击链接时,它会增加一个数字(限制为一个对等 ip 或类似的东西)。
例如:
凯尔特人队:0(点击投票)-----------这个被点击
湖人队:0(点击投票)
凯尔特人队:1
湖人队:0
会话或只是 php 编码怎么可能?
有任何想法吗?
我想制作一个投票部分,以便当用户单击链接时,它会增加一个数字(限制为一个对等 ip 或类似的东西)。
例如:
凯尔特人队:0(点击投票)-----------这个被点击
湖人队:0(点击投票)
凯尔特人队:1
湖人队:0
会话或只是 php 编码怎么可能?
有任何想法吗?
会话可用于立即测试是否已进行投票:
// 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 地址但不同客户端的后续连接可以投票。
这实际上取决于您想减少多少重复投票。用户注册,以及基于用户帐户的限制 - 或 - 基于需要确认的电子邮件地址的投票限制将更加可靠,但是那里的开销远远超过我在这里和现在可以描述的。