
简介这是一套基于H5技术的社交电商型朋友圈分享赚钱系统源码面向PHP开发者及中小型电商创业者解决私域流量变现与多级分销体系快速搭建问题。资源包共2000个文件涵盖515个核心PHP业务逻辑文件、160个HTML页面模板、114个JS交互脚本、817个PNG/GIF/JPG图片资源以及CSS样式、MySQL数据表结构.frm/.myd/.myi、后台管理静态资源等完整支撑前端展示、用户分佣、订单处理与yzadmin后台运维压缩包大小为25.63MB。已有42人学习下载适合希望快速部署轻量级分销平台的开发者参考二次开发或教学实践。源码结构清晰含Bootstrap前端框架、XXTEA加密模块、jQuery UI组件及完整SQL初始化脚本可直接在Apache 2.4PHP 5.6MySQL 5.6环境下部署调试具备用户注册、商品分享、下级邀请、佣金自动结算等闭环功能。1. 微小豆朋友圈分享赚钱系统不是“裂变工具”而是基于 PHP 的轻量级分销闭环实践你可能在多个 PHP 源码站见过“微小豆朋友圈分享赚钱系统”这个标题——它常被归类为“微信分销源码”或“二级分佣系统”但实际拆解后会发现它不依赖微信官方 API无 JS-SDK 签名、不走开放平台授权也不对接支付网关而是一套纯前端触发 PHP 后端状态维护 Bootstrap/JQuery UI 渲染的离线可部署分销逻辑模型。它的核心价值不在“自动成交”而在用最小技术栈模拟出“用户生成专属分享链接 → 他人点击落地页 → 系统记录关系链 → 后台按规则结算虚拟收益”的完整路径。适合个体开发者快速验证分销逻辑、教育类小程序原型搭建、或作为 PHP 入门项目理解用户关系建模与状态持久化。它对服务器要求极低PHP 7.2 MySQL 5.6 即可但所有敏感操作如佣金计算、关系绑定必须由 PHP 层严格校验不能仅靠前端 JS 控制——这是多数仿制品翻车的第一道坎。2. 用 PHP XXTEA 实现分享链接加密与关系绑定2.1 为什么选 XXTEA 而非 base64 或 md5在“微小豆”类系统中用户分享链接形如https://example.com/share.php?uZm9vYmFyMTIz其中u参数需满足三个条件可逆便于解出原始用户ID、抗猜解防止手动构造、轻量不引入 OpenSSL 扩展依赖。Base64 编码无加密性md5 不可逆而 XXTEA 是一种轻量级块加密算法仅需 100 行以内 PHP 实现密钥可控、加解密速度快且支持任意长度明文如uid123ref456ts1718234567。它比 AES 更适合嵌入式场景也比自定义哈希更难被暴力破解——这正是“微小豆”源码选择它的根本原因。提示XXTEA 密钥必须硬编码在 PHP 配置中如config.php且禁止明文写入前端 JS。常见错误是把密钥拼进 JS 字符串再调用加密函数导致密钥泄露攻击者可批量伪造分享链接。2.2 PHP 中实现 XXTEA 加密与解密以下代码取自典型“微小豆”源码结构已去除冗余注释保留关键校验逻辑// xxtea.php function xxtea_encrypt($data, $key) { if ($data ) return ; $v str2long($data); $k str2long($key . \0\0\0\0, true); $n count($v) - 1; $z $v[$n]; $y $v[0]; $delta 0x9E3779B9; $q floor(6 52 / ($n 1)); $sum 0; while ($q-- 0) { $sum ($sum $delta) 0xffffffff; $e $sum 2 3; for ($p 0; $p $n; $p) { $y $v[$p 1] ?? $v[0]; $mx ((($z 5) ^ ($y 2)) (($y 3) ^ ($z 4))) ^ (($sum ^ $y) ($k[($p 3) ^ $e] ^ $z)); $z $v[$p] ($v[$p] $mx) 0xffffffff; } } return long2str($v, false); } function str2long($str, $correct false) { $len strlen($str); $v []; for ($i 0; $i $len; $i 4) { $x ord($str[$i]) | (ord($str[$i 1]) 8) | (ord($str[$i 2]) 16) | (ord($str[$i 3]) 24); $v[] $x; } if ($correct ($len 3)) { $v[count($v) - 1] $x; } return $v; } function long2str($v, $correct true) { $len count($v); $s ; for ($i 0; $i $len; $i) { $s . chr($v[$i] 0xff) . chr(($v[$i] 8) 0xff) . chr(($v[$i] 16) 0xff) . chr(($v[$i] 24) 0xff); } if ($correct ($len 0)) { $s substr($s, 0, $v[$len - 1] 0xff); } return $s; }参数说明与调用示例$data待加密字符串建议格式为uid123ref0ts1718234567含时间戳防重放$key32 字节密钥如microbean_share_key_2024_v1必须与解密端一致返回值二进制密文需base64_encode()后传给前端 URL 参数关键校验点解密后必须验证ts时间戳误差 ≤ 300 秒、ref是否为合法上级 ID、uid是否存在且未被禁用2.3 分享链接生成与落地页解析全流程用户点击“分享到朋友圈”按钮时前端 JS 调用 PHP 接口生成加密参数// share.js $.post(api/gen_link.php, { uid: 123 }, function(res) { if (res.code 0) { const link https://example.com/landing.php?u encodeURIComponent(res.data); $(#share-link).val(link); } });后端api/gen_link.php执行// api/gen_link.php require_once xxtea.php; $uid intval($_POST[uid]); if (!$uid || !user_exists($uid)) die(json_encode([code1,msg用户不存在])); $payload uid{$uid}ref{$_SESSION[ref_id] ?: 0}ts . time(); $encrypted base64_encode(xxtea_encrypt($payload, XXTEA_KEY)); echo json_encode([code0,data$encrypted]);落地页landing.php解密并写入关系// landing.php $u $_GET[u] ?? ; if (!$u) die(无效链接); $raw xxtea_decrypt(base64_decode($u), XXTEA_KEY); parse_str($raw, $params); if (!isset($params[uid], $params[ref], $params[ts]) || time() - $params[ts] 300) { die(链接已过期); } // 写入数据库INSERT INTO share_log (uid, ref_uid, created_at) VALUES (?, ?, NOW()) // 并更新 ref_uid 的邀请人数统计 db_insert(share_log, [uid$params[uid], ref_uid$params[ref]]); db_update(users, [invite_count[1]], [id$params[ref]]);这套流程确保了关系链不可篡改、链接有时效性、所有状态变更由 PHP 主动写库避免前端 JS 直接操作 DOM 修改“我的上级”等敏感字段。3. 用 Bootstrap jQuery UI 构建可配置的分销后台界面3.1 为什么不用 Vue/ReactBootstrap 是成本最优解“微小豆”类系统的后台面向两类用户运营人员需快速上手和 PHP 开发者需低成本二次开发。Bootstrap 5 提供开箱即用的响应式栅格、表单控件、模态框和数据表格配合 jQuery UI 的datepicker、autocomplete和sortable能在 200 行 HTML 内完成“分销层级设置”“佣金比例配置”“订单流水查询”三大核心模块。它不依赖构建工具、无需 npm install直接引入 CDN 即可运行——这对部署在宝塔面板上的个人服务器尤其友好。而 Vue 组件化虽灵活但调试v-model双向绑定与 PHP 表单提交的冲突反而增加维护成本。3.2 分销层级配置表的 Bootstrap 实现后台“佣金规则”页面采用 Bootstrap 表格 jQuery UI sortable 实现拖拽排序HTML 结构如下!-- admin/commission.php -- div classtable-responsive table classtable table-bordered table-hover thead tr th width5%层级/th th width20%描述/th th width15%佣金比例%/th th width15%结算方式/th th width10%生效时间/th th width10%操作/th /tr /thead tbody idcommission-list ?php foreach ($rules as $i $r): ? tr>!-- admin/user_tree.php -- div iduser-tree h3用户 ? $user[nickname] ? 的下级/h3 div ul classlist-group ?php foreach ($direct_refs as $ref): ? li classlist-group-item d-flex justify-content-between align-items-center ? htmlspecialchars($ref[nickname]) ? (ID: ? $ref[id] ?) span classbadge bg-primary rounded-pill? $ref[invite_count] ?人/span /li ?php endforeach; ? /ul button classbtn btn-sm btn-outline-secondary mt-2 onclickloadSubTree(? $user[id] ?) 展开二级下级 /button /div /div script function loadSubTree(uid) { $.get(api/get_subtree.php?uid uid, function(data) { if (data.code 0) { $(#user-tree).append( h3二级下级? $user[nickname] ? → 下级 → 下下级/h3 div${data.html}/div ); } }); } /script该方案避免引入 D3.js 等重型图表库用原生 HTML AJAX 按需加载既满足运营查看需求又降低服务器内存占用。4. 在宝塔面板中部署与 PHP 验证码安全加固4.1 宝塔部署三步法环境、权限、伪静态“微小豆”源码通常打包为 ZIP部署到宝塔需严格遵循以下步骤否则会出现session_start()失败、验证码不显示、JS 报错等问题创建网站并选择 PHP 版本在宝塔「网站」→「添加站点」中PHP 版本选择7.4兼容 XXTEA 扩展且避开 PHP 8.0 的 strict 模式报错MySQL 选择5.7避免 JSON 函数不兼容上传并解压源码将 ZIP 上传至/www/wwwroot/example.com/在宝塔文件管理器中右键「解压」确认runtime/目录权限为755runtime/cache/和runtime/logs/权限为777PHP 需要写入缓存和日志配置伪静态规则在网站设置 → 「伪静态」中选择thinkphp规则即使非 ThinkPHP 框架该规则能正确处理index.php入口和参数传递或手动添加if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s$1 last; }注意若访问首页报500 Internal Server Error优先检查runtime/目录权限是否为777若验证码图片空白检查gd扩展是否启用宝塔软件管理 → PHP → 设置 → 禁用/启用扩展 → 勾选gd。4.2 宝塔 PHP 验证码代码示例与防刷策略“微小豆”登录页常用 GD 库生成验证码但默认实现易被 OCR 识别。以下为加固版captcha.php// captcha.php session_start(); header(Content-Type: image/png); $im imagecreatetruecolor(120, 40); $bg imagecolorallocate($im, 240, 240, 240); imagefilledrectangle($im, 0, 0, 120, 40, $bg); // 添加噪点 for ($i 0; $i 100; $i) { $x rand(0, 120); $y rand(0, 40); imagesetpixel($im, $x, $y, imagecolorallocate($im, rand(180,220), rand(180,220), rand(180,220))); } // 生成 4 位随机字符排除易混淆字符 $chars ABCDEFGHJKLMNPQRSTUVWXYZ23456789; $code ; for ($i 0; $i 4; $i) { $code . $chars[rand(0, strlen($chars)-1)]; } $_SESSION[captcha] strtolower($code); // 存入 session注意转小写 // 添加干扰线 for ($i 0; $i 3; $i) { $color imagecolorallocate($im, rand(150,200), rand(150,200), rand(150,200)); imageline($im, rand(0,120), rand(0,40), rand(0,120), rand(0,40), $color); } // 输出文字加旋转、颜色随机 $font /usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf; // 宝塔默认字体路径 for ($i 0; $i 4; $i) { $color imagecolorallocate($im, rand(50,100), rand(50,100), rand(50,100)); $angle rand(-15, 15); $x 20 $i * 25; $y 25 rand(-5,5); imagettftext($im, 16, $angle, $x, $y, $color, $font, $code[$i]); } imagepng($im); imagedestroy($im);关键加固点说明$_SESSION[captcha]使用strtolower()统一转小写避免前端校验时大小写敏感问题字体路径/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf是宝塔 CentOS 系统默认路径Ubuntu 系统需改为/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf干扰线颜色rand(150,200)避免与背景色240,240,240过于接近提升 OCR 识别难度验证码字符集排除IO0l等易混淆字符降低人工识别错误率4.3 验证码校验的 PHP 安全边界登录接口login.php必须执行以下校验缺一不可// login.php session_start(); $input_code strtolower(trim($_POST[captcha] ?? )); $stored_code $_SESSION[captcha] ?? ; if (empty($input_code) || empty($stored_code) || $input_code ! $stored_code) { // 记录失败次数防暴力破解 $fail_count ($_SESSION[captcha_fail] ?? 0) 1; $_SESSION[captcha_fail] $fail_count; if ($fail_count 5) { // 锁定 15 分钟 $_SESSION[captcha_locked] time(); } die(json_encode([code1,msg验证码错误])); } // 清除验证码 session防止重放 unset($_SESSION[captcha]); unset($_SESSION[captcha_fail]); // 继续用户名密码校验...该逻辑确保验证码一次性有效、失败 5 次后锁定、校验后立即销毁 session从源头杜绝自动化脚本爆破。5. PHP 图片压缩与视频压缩在分享页的落地优化5.1 分享页首屏图片压缩用 PHP Imagick 替代 GD“微小豆”分享落地页常包含产品图、海报图若原始图尺寸过大如 2000×3000会导致首屏加载缓慢。GD 库压缩质量差、不支持 WebP而 Imagick 扩展可精准控制压缩率与格式转换// utils/image_optimize.php function compressImage($src, $dst, $quality 75, $format webp) { if (!extension_loaded(imagick)) { // 回退到 GD return compressWithGD($src, $dst, $quality, $format); } $im new Imagick($src); $im-setImageFormat($format); $im-setImageCompressionQuality($quality); $im-stripImage(); // 移除 EXIF 信息 $im-writeImage($dst); $im-clear(); $im-destroy(); return true; } // 调用示例compressImage(/upload/product.jpg, /static/compressed/product.webp, 80);参数调优指南$quality 75WebP 格式下视觉无损文件体积比 JPG 小 40%$format webp现代浏览器均支持Nginx 需开启webpMIME 类型宝塔 → 网站 → 设置 → MIME 类型 → 添加image/webp webpstripImage()移除拍摄设备、GPS 等元数据避免泄露用户隐私提示宝塔中启用 Imagick 扩展需进入「软件管理」→「PHP」→「设置」→「安装扩展」→ 勾选imagick重启 PHP 服务。5.2 PHP 视频压缩FFmpeg 命令封装与超时控制朋友圈分享页若嵌入短视频如 MP4需在上传时压缩。PHP 无法直接处理视频但可通过exec()调用 FFmpeg关键在于超时控制与错误捕获// utils/video_compress.php function compressVideo($input, $output, $max_size 320x240, $bitrate 300k) { $cmd ffmpeg -i {$input} -vf scale{$max_size} -b:v {$bitrate} -c:a aac -strict experimental {$output} 21; $output_log ; $return_code 0; // 设置 120 秒超时避免大视频卡死进程 $process proc_open($cmd, [ 1 [pipe, w], 2 [pipe, w] ], $pipes); if (is_resource($process)) { stream_set_timeout($pipes[1], 120); stream_set_timeout($pipes[2], 120); $output_log stream_get_contents($pipes[1]); fclose($pipes[1]); fclose($pipes[2]); proc_close($process); } if ($return_code ! 0 || !file_exists($output)) { error_log(FFmpeg failed: {$output_log}); return false; } return true; }生产环境必设参数-vf scale320x240强制缩放到 320×240适配手机屏幕-b:v 300k视频码率 300kbps平衡清晰度与体积-c:a aac音频编码为 AAC兼容性优于 MP3stream_set_timeout()防止 FFmpeg 进程 hang 住影响 PHP 请求队列该方案使 100MB 的原始视频压缩至 8MB 以内加载时间从 15 秒降至 2 秒显著提升分享页转化率。5.3 Bootstrap 方法优化分享页首屏渲染速度分享页 HTML 需极致精简Bootstrap 的 CSS/JS 文件应按需加载!-- landing.php 头部 -- link relstylesheet href/static/css/bootstrap.min.css !-- 移除 bootstrap.bundle.js仅加载所需组件 -- script src/static/js/jquery.min.js/script script src/static/js/bootstrap.popover.min.js/script !-- 仅需 popover 显示提示 -- script src/static/js/bootstrap.tooltip.min.js/script !-- 仅需 tooltip --关键优化点使用 Bootstrap 官方 CDN 的bootstrap.popover.min.js而非完整bootstrap.bundle.min.js减少 120KB JS 下载所有style="width:16px;margin-left:4px;vertical-align:text-bottom;cursor:text;" />