当前位置:首页 > PHP

php实现投票

2026-04-02 23:55:51PHP

PHP实现投票功能

数据库设计 创建votes表存储投票数据,包含字段:id(主键)、option_id(选项ID)、user_id(用户ID)、created_at(投票时间)。选项表options包含id和name字段。

php实现投票

前端表单 使用HTML表单提交投票选项,表单method设置为POST,action指向处理投票的PHP脚本。单选按钮或下拉菜单用于选择投票选项。

php实现投票

<form action="vote.php" method="post">
  <input type="radio" name="vote" value="1"> Option 1
  <input type="radio" name="vote" value="2"> Option 2
  <button type="submit">Vote</button>
</form>

投票处理脚本 创建vote.php接收并处理投票数据。验证用户是否已投票,防止重复投票。使用PDO预处理语句防止SQL注入。

<?php
session_start();
$pdo = new PDO('mysql:host=localhost;dbname=your_db', 'username', 'password');

if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['vote'])) {
    $optionId = (int)$_POST['vote'];
    $userId = $_SESSION['user_id'] ?? null;

    if (!$userId) {
        die('请先登录');
    }

    $stmt = $pdo->prepare("SELECT COUNT(*) FROM votes WHERE user_id = ?");
    $stmt->execute([$userId]);

    if ($stmt->fetchColumn() > 0) {
        die('您已经投过票了');
    }

    $insert = $pdo->prepare("INSERT INTO votes (option_id, user_id) VALUES (?, ?)");
    $insert->execute([$optionId, $userId]);

    header('Location: results.php');
    exit;
}
?>

结果显示 创建results.php显示投票结果。计算各选项得票数和百分比,使用SQL聚合函数COUNT和GROUP BY。

<?php
$pdo = new PDO('mysql:host=localhost;dbname=your_db', 'username', 'password');
$query = $pdo->query("
    SELECT o.name, COUNT(v.id) as votes 
    FROM options o 
    LEFT JOIN votes v ON o.id = v.option_id 
    GROUP BY o.id
");
$results = $query->fetchAll(PDO::FETCH_ASSOC);
$totalVotes = array_sum(array_column($results, 'votes'));
?>

<ul>
<?php foreach ($results as $row): ?>
    <li>
        <?= htmlspecialchars($row['name']) ?>: 
        <?= $row['votes'] ?> votes 
        (<?= $totalVotes ? round($row['votes']/$totalVotes*100, 2) : 0 ?>%)
    </li>
<?php endforeach; ?>
</ul>

安全措施 验证用户身份防止刷票,使用CSRF令牌防止跨站请求伪造。对输出数据进行htmlspecialchars处理防止XSS攻击。限制每个IP或用户的投票频率。

标签: php
分享给朋友:

相关文章

php实现搜索功能

php实现搜索功能

实现基础搜索功能 使用PHP和MySQL实现基础的搜索功能需要结合表单提交与数据库查询。创建一个HTML表单用于接收用户输入的搜索关键词,通过PHP处理表单数据并查询数据库。 // 搜索表单 (HT…

php实现递归

php实现递归

递归的基本概念 递归是一种函数调用自身的技术,适用于解决可以分解为相同子问题的问题。在PHP中,递归需要明确的终止条件(基线条件),否则会导致无限循环。 递归实现阶乘 阶乘是经典的递归案例,n! =…

php实现图片上传

php实现图片上传

实现图片上传的基本步骤 创建HTML表单用于文件上传,表单需设置enctype="multipart/form-data"属性,确保文件数据正确传输。 <form action="upload…

php 实现自动收货

php 实现自动收货

PHP 实现自动收货功能 自动收货功能通常用于电商系统,在订单超过一定时间未手动确认收货时自动完成订单。以下是实现方法: 数据库设计 需要订单表包含以下关键字段: CREATE TABLE ord…

php 实现单点登录

php 实现单点登录

PHP 实现单点登录的方法 单点登录(SSO)允许用户通过一次登录访问多个相互信任的系统。以下是基于 PHP 的实现方案: 基于共享 Session 的方案 在同一个主域名下的子域名间可以通过共享…

无限分类实现 php

无限分类实现 php

无限分类的实现方法 无限分类通常用于构建多层级结构的数据,如商品分类、部门架构等。以下是几种常见的实现方式: 邻接列表模式(Adjacency List) 邻接列表是最简单的实现方式,通过在每个记录…