首页 > 编程语言 >php 生成卡密 不重复

php 生成卡密 不重复

时间:2024-08-28 18:05:02浏览次数:8  
标签:name 卡密 重复 num startNumber increment php data card

public function add()
    {
        if (false === $this->request->isPost()) {
            return $this->view->fetch();
        }
        $params = $this->request->post('row/a');
        if (empty($params)) {
            $this->error(__('Parameter %s can not be empty', ''));
        }
        $num = $params['num'];
        if (!is_numeric($num)) {
            # 请输入数字
            $this->error('请输入数字');
        }
        if ($num <= 0) {
            # 数量必须大于0
            $this->error('数量必须大于0');
        }
        if ($num > 1000){
            $this->error('一次批量生成1000条');
        }
        $cardLog  = Db::name('card_log')->order("card DESC")->find();
        if ($cardLog){
            $startNumber = $cardLog['card'] + 1; // 起始数字
        }else{
            $startNumber = 10000000; // 起始数字
        }
        $increment = 1; //增量
        $numbersBatch = $this->generateUniqueNumbers($startNumber, $increment, $num);
        foreach ($numbersBatch as $v){
            $data[] = [
                'name' => $v,
                'key' => getCardKey(),
                'status' => 1,
                'createtime' => time(),
            ];
        }
        $this->model->insertAll($data);
        Db::name('card_log')->insert(['card' => $data[count($data)-1]['name'],'createtime' => time()]);
        $this->success("成功");
    }

    function generateUniqueNumbers($startNumber, $increment, $count) {
        $uniqueNumbers = array();
        for ($i = 0; $i < $count; $i++) {
            $number = $startNumber + $i * $increment;
            $uniqueNumbers[] = str_pad($number, 8, '0', STR_PAD_LEFT);
        }
        return $uniqueNumbers;
    }

例如:10000001,10000002,10000003

标签:name,卡密,重复,num,startNumber,increment,php,data,card
From: https://www.cnblogs.com/ixiangang06/p/18385269

相关文章

  • 编译安装PHP8
    Cenots7编译安装PHP8.01.安装依赖yum-yinstalllibxml2-develsqlite-develbzip2-devellibcurl-devellibpng-devellibjpeg-develfreetype-devellibicu-develoniguruma-devellibxslt-devellibzip可能会报错1.1编译安装libzip-devel依赖包1.下载包mkdir/usr......
  • thinkPHP6 反序列化
    thinkPHP6反序列化thinkPHPv6.0.0-6.0.3环境搭建新版v6基于PHP7.1+开发php-7.3.4ThinkPHPv6.0.3使用composer进行安装composercreate-projecttopthink/think=6.0.3tp6.0然后利用phpstudy打开框架,简单配置如下子,再同样的道理配置phpstorm的调试。但是万事......
  • 82. 删除排序链表中的重复元素 II
    传送锚点:力扣给你一个链表的头节点head和一个整数val,请你删除链表中所有满足Node.val==val的节点,并返回新的头节点。示例1:输入:head=[1,2,6,3,4,5,6],val=6输出:[1,2,3,4,5]示例2:输入:head=[],val=1输出:[]示例3:输入:head=[7,7,7,7],val=7输......
  • 在phpmyadmin中使用pinpoint
    >fromhttps://github.com/pinpoint-apm/pinpoint-c-agent/wiki/%E5%9C%A8phpmyadmin%E4%B8%AD%E4%BD%BF%E7%94%A8pinpoint怎样在phpmyadmin中使用pinpoint-c-agent为什么我们要发布这篇文章?分享一些监控PHP项目的经验您能从里面获取到啥?怎样使用pinpoint监控PHP......
  • phpinclude-labs做题记录
    Level1file协议payload:?wrappers=/flagLevel2data协议去包含data协议中的内容其实相当于进行了一次远程包含,所以data协议的利用条件需要php.ini中开启allow_url_fopen和allow_url_includeGET:?wrappers=,然后POST:helloctf=system('cat/flag');Level3data......
  • 代码随想录day43 || 300 最长递增子序列,674 最长连续递增子序列,718 最长重复子数组
    300最长递增子序列varpath[]intvarresintfunclengthOfLIS(nums[]int)int{ //尝试回溯思路 iflen(nums)==1{ return1 } path=[]int{} res=0 backtracking(nums) returnres}funcbacktracking(nums[]int){ iflen(nums)==0{ iflen(pat......
  • 安全:关闭nginx/php的对外版本显示
    一,关闭nginx的版本显示:1,关闭前2,关闭nginx版本显示:编辑nginx.conf[root@blogconf]#vinginx.conf增加一行:server_tokensoff;重新服务:[root@blogconf]#systemctlreloadnginx.service3,再次查看:二,关闭php的版本显示1,关闭前2,关闭编辑php.ini[root@blo......
  • 基于PHP的文件上传
    文件上传是现代网络应用中不可或缺的功能,它允许用户将本地文件存储到服务器上,用于后续的处理、分发或备份。一、基于前端验证的文件上传文件上传漏洞中的前端验证漏洞是一个常见且危险的问题。这类漏洞的产生主要是因为前端验证机制可以通过多种方式被绕过,从而使得攻击者能......
  • 11. HashSet的内部实现原理是什么?它如何保证元素不重复?
    HashSet是Java集合框架中的一个实现了Set接口的类,它用于存储不重复的元素。HashSet的内部实际上是基于HashMap来实现的。下面是HashSet的内部实现原理和它如何保证元素不重复的细节。1.HashSet的底层数据结构HashSet内部使用一个HashMap实例来存储元素。在HashSet中,每个添......
  • 【开源分享】PHP工单管理系统源码 带搭建教程
    一、设备报修工作内容1.工单管理:设备报修系统可以将设备故障统计为工单并对工单进行汇总管理。将工单数据进行归类,将故障分类进行查看、统计、分析等等。2.设备状态:工单可通过用户上报设备状态数据进行查看,维修工程师在维修设备前,可以进行设备信息查询。3.设备状态:设备运行......