针对您的需求,在Discuz系统中可通过以下三种专业方案实现老客户礼品申领功能(无需购买插件):
一、原生表单改造方案
1. 进入后台【门户】-【模块管理】,创建"礼品申领"新模块
2. 在模块模板中添加:
- <form action="{MOD_URL}" method="post">
- <div class="xg1">手机号:<input type="tel" name="mobile" pattern="1[3-9]\d{9}" required></div>
- <div class="xg1">选择礼品:
- <select name="gift">
- <option value="101">智能保温杯</option>
- <option value="102">无线充电宝</option>
- </select>
- </div>
- <button type="submit">提交申请</button>
- </form>
复制代码
3. 在对应PHP处理文件中添加数据写入逻辑:
- if($_POST){
- C::t('common_setting')->update('gift_apply', array(
- 'mobile' => dhtmlspecialchars($_POST['mobile']),
- 'giftid' => intval($_POST['gift']),
- 'dateline' => TIMESTAMP
- ));
- }
复制代码
二、插件化改造方案(需开发基础)
1. 创建插件目录结构:
- source/plugin/giftapply/
- - plugin_giftapply.class.php
- - template/submit.htm
- - template/admincp.htm
复制代码
2. 实现前台数据收集:
- class plugin_giftapply {
- function global_footer(){
- include template('giftapply:submit');
- }
- }
复制代码
3. 后台管理界面开发数据导出功能,建议使用CSV格式导出:
- header("Content-type:text/csv");
- header("Content-Disposition:attachment;filename=申领记录.csv");
- echo iconv('utf-8','gbk','手机号,礼品ID,提交时间');
- foreach($data as $row){
- echo PHP_EOL.iconv('utf-8','gbk',"{$row['mobile']},{$row['giftid']},".date('Y-m-d H:i',$row['dateline']));
- }
复制代码
三、深度整合方案
1. 创建独立数据表:
- CREATE TABLE pre_gift_apply (
- id mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
- uid mediumint(8) unsigned NOT NULL DEFAULT '0',
- mobile varchar(11) NOT NULL DEFAULT '',
- giftid smallint(5) unsigned NOT NULL DEFAULT '0',
- status tinyint(1) NOT NULL DEFAULT '0',
- PRIMARY KEY (id),
- KEY mobile (mobile)
- ) ENGINE=MyISAM;
复制代码
2. 实现与用户系统的深度对接:
- // 在会员中心添加申领入口
- function giftapply_in_ucenter() {
- global $_G;
- include template('giftapply:ucenter');
- }
复制代码
数据安全建议:
1. 手机号验证采用正则校验:
- /^1[3-9]\d{9}$/.test(mobile)
复制代码
2. 服务端增加防刷机制:
- if($_G['uid'] && submit_count($_G['uid']) > 3){
- showmessage('每个账号最多提交3次申请');
- }
复制代码
可通过DZX模板开发文档中的表单处理章节获取更多实现细节。如需可视化数据管理,推荐使用DZX提供的免费数据管理组件,可快速生成后台管理界面。所有方案均遵循Discuz! X3.5开发规范,保证与核心系统的兼容性。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。 |