PHP投票 每天只能投票一次

目前没有方法能完全避免网上重复投票,如记录IP、设置cookie和session都有局限性。文中给出PHP投票防重复投票的方法,包括24小时内只能投票一次和每天投票一次的实现代码,通过记录IP、cookie、session及时间判断来尽量防止重复投票。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目前为止还没有一种方法能完全避免网上重复投票
如果记录ip,一般ADSL断网再连ip就变了设置cookie,浏览器都有禁用或者清除cookie的功能设置session,关闭浏览器就没了所以,我们只能尽量防止重复投票现象

PHP投票 24小时内只能投票一次

session_start();//获取ip地址
if(!empty($_SERVER["HTTP_CLIENT_IP"])){
$cip = $_SERVER["HTTP_CLIENT_IP"];
}
if(($_COOKIE['VoteIP']==$cip) or ($_SESSION['VoteIP']==$cip)){
//拒绝投票
}
//记录到cookie中
SetCookie("VoteIP", $cip, time()+3600*24);//3600秒=1小时 过期时间为24小时
 
//记录到session中
$_SESSION['VoteIP']=$cip;
 
//设置session存活时间
$lifeTime = 24 * 3600; 
session_set_cookie_params($lifeTime);
PHP投票 每天投票一次

if(!empty($_SERVER["HTTP_CLIENT_IP"])){
  $cip = $_SERVER["HTTP_CLIENT_IP"];
}
//获取当前时间
$date=date('y:m:d');
//以数组形式存入session
$info = array('ip'=>$cip,'time'=>$date);
//取出
$_SESSION['voteip'] = $info;
$arr = $_SESSION['voteip'];
//取出储存的日期
$t1 = strtotime($arr['time']);
//取出当前日期
$t2 = strtotime(date('y:m:d'));
//计算当前相差天数
$t = $t2 - $t1;
echo (int)($t / 86400);
//判断是否大于一天
if($t>=1){
//允许投票
}else{
//拒绝
}
?>

PHP中,为了实现一个投票系统,允许用户一次最多选择三个选项,你可以创建一个表单,结合MySQL数据库存储用户的选择。以下是基本步骤: 1. **设计数据库**: 创建一个表格,包含用户ID、投票ID以及一个数组字段(例如`option_ids[]`)来存储用户选择的选项ID,用逗号分隔。 ```sql CREATE TABLE votes ( user_id INT, vote_id INT, option_ids TEXT, PRIMARY KEY (user_id, vote_id) ); ``` 2. **表单设计**: 使用HTML构建一个表单,让用户输入他们的选择。每个选项都有一个复选框,用户可以选择最多3个。 ```html <form method="post" action="submit_vote.php"> <input type="hidden" name="vote_id" value="[your-vote-id]"> <input type="checkbox" id="option1" name="option_ids[]" value="1"> Option 1<br> <!-- Repeat for other options --> <button type="submit">提交</button> </form> ``` 3. **处理表单** (`submit_vote.php`): 获取用户提交的数据,并验证是否选择了不超过3个选项。 ```php // 检查POST数据 $selected_options = explode(',', $_POST['option_ids']); if (count($selected_options) > 3) { echo "您只能选择3个选项!"; } else { // 连接数据库并更新记录 $conn = mysqli_connect("..."); $query = "UPDATE votes SET option_ids = '" . implode(',', $selected_options) . "' WHERE user_id = [user-id] AND vote_id = [vote-id]"; mysqli_query($conn, $query); // 提交成功信息 echo "您的投票已保存!"; } ``` 4. **安全性和限制**: 为了防止SQL注入,记得使用预处理语句或参数化查询。同时,可以考虑对投票次数设置限制,以防止滥用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值