紫猫插件-网络共享数据(16-18)
QM[zm]04.16 网络共享数据之数据库权限(VIP)
小知识:简单的限制同名设备登陆功能 实现思路
每次某个设备登陆 就把登陆设备的设备Id上传接口 接口在数据库里面查找对应的设备 找到字段是否已运行为1 当该设备脚本停止 就给接口传送一个信息 让该字段为-1 但是这会涉及到接口的功能设计和php代码的管理 如果有相同设备id的设备想要运行脚本 先到接口的数据库搜索是否已运行字段的值 如果为1 表明已经有该设备运行 自然会阻止重名设备运转 如果没有设备运行 则允许运行后 把字段 已运行字段 的值改为1 给自己接口上增加这个功能(这个思路其实不用看了 因为下一节有老师的思路和完整的代码)
注意:如果网站挂在外网 需要调整几点 因为要考虑安全因素了
1.数据库的名字test 这个数据库名并不安全 请自己重想一个数据库名 并在sql.php里面修改成对应的名字
2 对于数据库的账号 不要用root账号 风险过大 可以在后台设置一个普通用户 给与一定的基础权限就够了 具体设置方法 可以百度 没什么太多需要说的 一个具体的链接可以参考https://jingyan.baidu.com/article/fa4125acb2fd8d28ad709245.html
3 注意 选择 任意主机和本地的时候 注意区别
4 注意真正的密码是这个 而不是我们输入的密码
QM[zm]04.17 网络共享数据之脚本授权加密验证(VIP)
以前的老问题:老师这节课提到了 中控系统的一个最要紧的东西 如果脚本是非正常的停止 没有给接口发送终止的命令 接口数据库自然没有记录该脚本已经停止 这就需要接口数据库定时执行一个数据库遍历任务 查看所有的记录里面所记录的最新时间和当前时间对比 超过2分钟的就会认定已经下线 。如果是普通的虚拟主机 因为没法进入服务器端 更没法用at命令来设置定时任务 所以无法实现这个定时操作 还有其他的投机取巧的办法 以前博客也有阐述 但是依然无法实现
老师提出了一个解决办法 虽然不是十分完美 但是的确是解决了 下面就是思路
老师提出用随机字符串来验证的思路也不错
目的:我们要实现一个设备号当前只有一个可以登陆的
思路结构(主要是数据库表的结构和运行思路):(不过会顶号)
举个例子:设备id YTYUTU34234GSj 这个设备 上的脚本运行 产生了一个随机数之为987324 然后把这个随机数值送到数据接口上传到接口数据库记录 记录的样式
id 1 | 设备id YTYUTU34234GSj | 设备验证码 :987324 | 最新更新时间 :2019-01-05 17:23 (应该是时间戳)
如果此时我又开了一个设备 把该设备的设备id也设置为YTYUTU34234GSj 运行第二个设备的脚本 也会产生一个随机值 但是 基本不可能跟第一个设备的随机数一样 打个比方为945832 把这个数据提交到接口 接口数据库接收了 该设备id对应的记录改为了
id 1 | 设备id YTYUTU34234GSj | 设备验证码 :945832 | 最新更新时间 :2019-01-05 17:30 (应该是时间戳)
当第一个设备周期性的验证接口数据库当前设备id对应的验证码的时候 接口数据库的验证码现在为945832 而不是第一个设备的987324 那么第一个设备会自己停止运行脚本并提示发生设备id冲突 如果存在第三个设备 该设备id也为YTYUTU34234GSj 那么会导致第二个设备也会停止
数据库结构:
源码:
Import "zm.luae" //导入插件,只需执行一次 zm.Init //初始化插件,只需执行一次 Randomize Dim 显示字符串="" Dim 当前验证字符串=随机数字字母字符串(array(0,15)) //Dim 设备id=GetDeviceID() Dim 设备id="1234567890" //因为就算用模拟器复制一个镜像 设备id还是有区别 所以我就指定下设备id让他们相同 TracePrint "生成的 当前验证字符串["&当前验证字符串&"]" Dim 网络数据库接口地址="http://192.168.0.102/sql.php" zm.NetDataInit 网络数据库接口地址, "测试数据库" zm.NetDataSet 设备id, 当前验证字符串 //把当前的设备id和当前设备对应的随机验证字符串上传给接口数据库记录到其中//设置几个线程需要用到的变量 因为线程和主代码之间很多东西无法通用 Thread.SetShareVar "多线程设备id", 设备id Thread.SetShareVar "多线程当前验证字符串", 当前验证字符串 Thread.SetShareVar "多线程是否运行","1" Thread.Start 多线程_设备网络验证 //运行多线程 线程负责链接接口数据库检测当前设备id对应的验证字符串和脚本本身的验证字符串是否一致//主循环代码 Do //若干操作 If Thread.GetShareVar("多线程是否运行") <> "1" Then For 5ShowMessage "主代码<发生设备冲突 当前脚本停止>"Delay 2000NextEndScript //主代码停止Else ShowMessage "主代码[本次检测一切正常 允许当前设备运行脚本]"Delay 1000End If Delay 20000 LoopSub 多线程_设备网络验证()Dim 网络数据库接口地址="http://192.168.0.102/sql.php"zm.NetDataInit 网络数据库接口地址, "测试数据库"Dim 网络上获取的当前验证字符串=zm.NetDataGet(Thread.GetShareVar("多线程设备id"))TracePrint "网络上获取的 多线程当前验证字符串为["&网络上获取的当前验证字符串&"]"Do//链接接口数据库 把当前设备id提交获取数据库里面记录的验证字符串 然后和本地的验证字符串比较网络上获取的当前验证字符串=zm.NetDataGet(Thread.GetShareVar("多线程设备id"))If 网络上获取的当前验证字符串 <> Thread.GetShareVar("多线程当前验证字符串") Then Thread.SetShareVar "多线程是否运行", "-1" //将该线程值变为-1 通知主代码停止TracePrint "多线程内发现网络验证字符串和本地的验证字符串不同 多线程停止"EndScript //线程停止Else ShowMessage "多线程[一切正常]"End If Delay 10000 //10秒检测一次 LoopEnd Sub //下面是随机生成指定长度字符串的函数 和主代码无关 Function 随机数字字母字符串(配置数组或者长度数值)Dim arr,str,resultIf IsArray(配置数组或者长度数值) Then If 配置数组或者长度数值(0) = 0 Then str="a-b-c-d-e-f-g-h-i-j-k-l-m-n-o-p-q-r-s-t-u-v-w-x-y-z-1-2-3-4-5-6-7-8-9-0"arr = Split(str, "-")ElseIf 配置数组或者长度数值(0) = 1 Thenstr="1-2-3-4-5-6-7-8-9-0"arr = Split(str, "-")ElseIf 配置数组或者长度数值(0) = 2 Thenstr="a-b-c-d-e-f-g-h-i-j-k-l-m-n-o-p-q-r-s-t-u-v-w-x-y-z"arr = Split(str, "-")End IfElse str="a-b-c-d-e-f-g-h-i-j-k-l-m-n-o-p-q-r-s-t-u-v-w-x-y-z-1-2-3-4-5-6-7-8-9-0"arr = Split(str, "-")End If//35个字符For cint(配置数组或者长度数值(1))result=result&arr(cint(随机数(0,ubound(arr))))Delay 10NextTracePrint "得到的随机字符串为: " & result随机数字字母字符串=result End Function Function 随机数(最小值,最大值)Dim 结果结果 = Int((最大值 - 最小值 + 1) * Rnd() + 最小值)随机数=结果 End Function
QM[zm]04.18 网络共享数据之一些更新内容(VIP)
1.sql导入导出
txt导入mysql
鉴于手机脚本用的比较多的是txt来存储一些重要的账号密码信息 所以这里演示下如何把txt里面的账号密码信息传递到数据库里面 老师的办法可行 但是效率有点低
常见的txt账号文件结构如下
打开mysql后台 先新建表 加2个字段 txt里面有几列我们就加入几个字段
开始导入txt
设置导入参数
分隔符设置 因为txt里面分隔符为- 所以我们导入要设置
结果
可以给当前表再添加一些需要的字段 比如id自增 或者是其他字段 这样就完成了txt导入mysql
mysql导出为txt
设置导出参数
得到结果
2.获取最大行数
结果 = zm.NetDataCount([数据表名]) 没什么说的 无非就是 select count(*) from XXX
3起始行限定
不用多说
4接口数据库内容写入表(效率存在问题 不建议用这个办法 可以直接txt导入mysql)
转载于:https://www.cnblogs.com/zjl8455482/p/10226015.html
紫猫插件-网络共享数据(16-18)相关推荐
- 简易中控紫猫插件版(3)压缩包使用说明
1.环境配置 脚本运行环境:没什么说的 正常的最新版手机按键 当然还需要 最新的紫猫插件 中控运行环境:首先要保证把压缩包的所有php文件都扔到网站的根目录下 必须保证网站的php版本是5.4+ 不然 ...
- 保存的图数据丢失_锡柴自主刷写和备份共享数据文件使用介绍
刷写功能 锡柴自主 ECU刷写可以恢复损坏的数据或是新ECU刷上相应车型的数据 注意事项 确认车辆电瓶电量充足,平板电脑电量充足.发动机不启动.车辆处于刹车状态.建议使用USB线进行刷写可以提高刷写速 ...
- 虚拟机连接网络_Parallels Desktop 16教程PD16虚拟机共享网络和桥接网络设置方法
许多用户在Mac上安装Parallels Desktop 16之后,想要设置Mac与虚拟机共享网络,那么共享网络和桥接网络设置有什么不同?该怎样设置?本篇就为大家分享PD16虚拟机共享网络和桥接网络设 ...
- 访问有用户名和密码的网络共享,实现数据导入
一个应用需要使用局域网某部主机提供的数据.由于安全考虑.这个主机只开放了一个共享地址,并给了有权访问的用户名和密码.数据为ACCESS文件. 而我们的应用需要每天定时去访问这个文件.来同步数据. 环境 ...
- 【Python网络编程和并发-多线程共享数据混乱引出同步锁】
38_第五章-多线程共享数据混乱引出同步锁 一.上节回顾 总结 在一个进程内的所有线程共享全局变量,能够在部使用其他方式的前提下完成多线程之间的数据共享(这点要比多进程更好) 缺点就是,线程对全局变量 ...
- 计算机网络共享是什么意思,网络共享与便携式热点是什么意思
网络共享与便携式热点是什么意思 2018-09-17 推荐内容 网络共享与便携式热点是什么意思 手机 来自 匿名用户 的提问 最佳答案 由提问者推荐 匿名用户 所谓便携式wlan热点,也就是将因特网分 ...
- Android网络之数据解析----SAX方式解析XML数据
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...
- Disruptor 线程间共享数据无需竞争
队列的作用是缓冲 缓冲到 队列的空间里.. 线程间共享数据无需竞争 原文 地址 作者 Trisha 译者:李同杰 LMAX Disruptor 是一个开源的并发框架,并获得2011 Duke' ...
- 线程的创建 验证线程之间共享数据 守护线程 线程进程效率对比 锁 死锁 递归锁...
线程(from threading import Thread):CPU调度的最小单位 线程的两种创建方式:方式一: 1 from threading import Thread 2 def f1(i ...
- Java高并发编程:多个线程之间共享数据的方式探讨
内容摘要 多个线程之间共享数据,按照每个线程执行代码是否相同,我们可以采取不同的处理方式,这里通过简单的卖票示例说明了当每个线程执行相同代码的情况,对于多个线程执行不同代码的情况,处理方式比较灵活,这 ...
最新文章
- 生成对抗网络gan原理_中国首个“芯片大学”即将落地;生成对抗网络(GAN)的数学原理全解...
- Jeff Dean:一年开源12款新工具,谷歌负责任AI原则落地生根
- okhttp请求文件异常解决方法
- cocos studio和cocos creator关系
- Seq2Seq+前缀树:检索任务新范式(以KgCLUE为例)
- 简单实现几种常见的前端效果,附代码!
- java heap space flex_Flash builder 4内存优化之java heap space解决办法
- python笔记之利用BeautifulSoup爬取糗事百科首页段子
- 首席架构师徐海峰眼中的架构和出色的架构师
- 我身边的计算机网,电脑在我身边作文700字
- Linux服务-bind
- PowerDesigner生成的建表脚本中如何把对象的双引号去掉
- 移动APP测试,adb工具
- C#制作简易屏幕保护
- debian10上安装samba服务器
- 第二届全球区块链峰会随记
- 拼多多参谋:拼多多隐私号是什么意思?拼多多隐私号怎么查看真实号码?
- Bad config encountered during initialization: No such notebook dir:
- 局域网https安全证书解决方案mkcert
- DSO详解-Direct Sparse Odometry论文解读