源码系统概览
文章正文
幸运大转盘是一套纯原生 PHP 写成的抽奖互动源码,整个 lottery 目录只有 25 个 PHP 文件,不依赖任何框架和 Composer。
前台转盘、积分体系、每日签到、礼品兑换商城和管理后台已经全部打通,拿来做营销活动页或者当 PHP 项目练手素材都很合适。
本站已完整解压并做过代码走查,下面把目录结构、抽奖判定逻辑和部署时要注意的坑一次讲清楚。
源码简介
程序根目录是 lottery,入口文件包括 index.php 转盘主页、login.php 登录、spin.php 抽奖接口、checkin.php 签到、profile.php 个人中心、shop.php 积分兑换商城和 install.php 安装脚本。
公共层放在 includes 目录,db.php 封装了一个静态 DB 类,提供 one、all、exec、page、columns、run 等方法,全部使用问号占位符做参数化查询。
functions.php 负责业务判定,getSymbols 读取可用符号、getDailyLimit 取每日次数、getTodaySpins 统计当天抽奖数、checkWin 执行中奖比对,auth.php 提供 requireLogin 与 requireAdmin 两级会话校验。
数据层共九张表,分别是 users、symbols、prizes、spin_records、settings、notices、gifts、redemption_orders 和 checkin_logs,覆盖了用户、符号、奖品、抽奖流水、系统配置、公告、礼品、兑换订单和签到记录。
适用场景
适合电商店铺做节日抽奖引流页,也适合公众号活动、线下扫码抽奖和会员积分消耗场景。
因为不带框架,代码读起来非常直白,很适合 PHP 初学者研究会话认证、PDO 参数化查询和积分事务的写法。
二次开发时可以把它当成一个抽奖模块,接到自己的会员系统里复用。
功能亮点
抽奖玩法是三格转轮式,默认十个 emoji 符号,符号列表可在后台增删并设置排序和启用状态。
中奖判定分四层,先按 combo 字段精确匹配自定义组合,再依次匹配三格全同的 JACKPOT、三连的 3MATCH 和两连的 2MATCH,规则全部由数据库驱动,不用改代码。
支持游客免登录试玩,未登录用户每天五次,登录用户按后台配置的每日免费次数执行,默认十次。
积分消耗支持系统底价加自定义下注额,倍率参数限制在一到一百之间,抽奖前先扣分再开奖,逻辑清晰。
后台目录 admin 下有十一个页面,包含仪表盘、用户管理、奖品管理、符号管理、抽奖记录、兑换订单、礼品管理、公告管理和系统设置。
技术架构与部署指南
| 维度 | 本套源码 | 同类通用方案 |
|---|---|---|
| 技术栈 | 前端:原生 HTML 加 CSS 与 JavaScript,转盘动画由 launchReels 与 endSpin 两个 | 依具体方案选型,需自行搭建与维护 |
| 部署方式 | 第一步先编辑 config.php,把 DB_HOST、DB_USER、DB_PASS、DB_NAME 改成自己的数据库 | 多托管于第三方平台或订阅云服务 |
| 功能侧重 | 抽奖玩法是三格转轮式,默认十个 emoji 符号,符号列表可在后台增删并设置排序和启用状态。 | 功能通用,定制深度有限 |
| 数据归属 | 数据自持,部署在自有服务器,不出站 | 数据通常留存于服务商侧 |
| 成本模式 | 获取后自主部署,无持续授权费用 | 通常按订阅或调用量计费 |
技术栈与运行环境
前端:原生 HTML 加 CSS 与 JavaScript,转盘动画由 launchReels 与 endSpin 两个函数驱动,无前端框架。
后端:原生 PHP,面向过程加一个静态 DB 工具类,无 MVC 框架、无 Composer 依赖。
数据库:MySQL,字符集 utf8mb4,共九张业务表。
运行环境:建议 PHP 7.4 及以上,需开启 PDO 与 PDO_MySQL 扩展和 Session 支持。
其他依赖:无第三方 SDK,无外部接口调用,可离线部署在内网。
安装与部署提示
第一步先编辑 config.php,把 DB_HOST、DB_USER、DB_PASS、DB_NAME 改成自己的数据库信息,同时把 SITE_NAME 与后台账号密码常量改掉。
第二步浏览器访问 install.php,脚本会自动创建九张表并写入默认符号和奖品数据。
第三步立刻删除或重命名 install.php,避免被人重复执行导致数据被重置。
最后访问 admin/index.php 登录后台,先在系统设置里调整每日次数与抽奖底价,再配置奖品和礼品库存。
截图与演示说明
前台首页 index.php 是转盘主视图,三格转轮加下注区、剩余次数提示和公告滚动条,是最值得截图的页面。
shop.php 是积分兑换商城,按 gifts 表渲染礼品卡片,点击兑换会写入 redemption_orders 表并展示订单状态。
checkin.php 是签到日历页,配合 checkin_logs 表显示连续签到天数和积分奖励。
后台 admin/dashboard.php 是数据看板,admin/prizes.php 可以看到 combo 组合与奖品等级的对应表,admin/records.php 是抽奖流水列表,admin/orders.php 是兑换订单处理页,这几页都能直接体现系统完整度。
常见问题
问:提示符号未配置怎么办?
说明 symbols 表里启用的符号不足三个,先运行 install.php 初始化,或者在后台符号管理里手动启用。
问:登录后抽奖提示积分不足?
系统会把后台设置的 spin_cost 底价和本次下注额相加后扣分,把 spin_cost 设为零即可恢复免费抽奖。
问:游客抽奖次数怎么改?
游客次数固定写在 spin.php 里,默认每天五次,需要调整就直接改该文件中的限制变量。
安全风险提示
本源码未检测到 eval、base64_decode、shell_exec 一类混淆或后门代码,数据库操作全部使用参数化查询,输出也做了 htmlspecialchars 转义。
但 config.php 里硬编码了数据库 root 账号、空密码以及管理员账号 admin 与明文密码 admin888,后台密码是常量比对而非数据库哈希,部署前必须全部替换。
install.php 执行后没有自动加锁,抽奖随机数使用 array_rand 而非加密级随机源,涉及实物奖品时建议自行加固。
特别提示:下载后请务必进行安全审计,删除风险代码并修改全部默认凭据后再部署使用!
下载说明
本站提供的是完整可运行的源码包,解压后即为 lottery 目录,包含全部前台页面、后台页面、公共类库和安装脚本。
源码仅供学习研究、测试部署和二次开发参考,商用前请自行确认授权、版权和安全风险。
抽奖类程序若用于真实奖品发放,请遵守当地关于有奖销售和活动公示的相关规定,不要用于任何变相赌博用途。
