欢迎大家加入笔记的建设,共同丰富和完善内容!
本人专科应届毕业生,寻求工作中,求介绍~
DzzOffice 正在参加 【开源中国 Gitee 2025 年度开源项目】 评选,您的一票,是对咱们最大的支持和认可。
overtrue/easy-sms 封装,支持多网关(阿里云、腾讯云、云片等)自动切换、验证码生成、频率限制等核心能力。开发者仅需通过 全局 sms() 函数 发送短信,通过 C::t('#sms#sms_smslog')->verify() 方法 验证验证码,无需关注底层实现细节,适用于登录、注册、密码重置等场景。$params 说明| 参数名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
codelength | int | 6 | 可选,验证码长度(4-8位,仅适用于验证码类模板) |
expire | int | 15 | 可选,验证码有效期(单位:分钟,过期后无法验证) |
smsinterval | int | 60 | 可选,同一手机号发送间隔(单位 :秒,避免短时间内重复发送) |
smstimelimit | int | 300 | 可选,频率限制时间窗口(单位:秒,默认5分钟内) |
smsnumlimit | int | 5 | 可选,时间窗口内最大发送次数(超过则拒绝发送) |
mobicc | int | 86 | 可选,国家码(如中国86,需与手机号匹配) |
uid | int | 0 | 可选,关联用户ID(用于日志追溯,默认当前登录用户ID) |
gateways | string | "" | 可选,如果指定网关(如aliyun)将只通过该网关进行发送 |
mock | bool | false | 可选,模拟发送(仅记录日志不实际调用网关,用于测试环境) |
C::t('#sms#sms_smslog')->verify() 方法验证用户输入的验证码有效性,无需手动查询数据库。$appinfo 说明| 键名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
expire | int | 5 | 验证码有效期(单位:分钟,与 sms 函数的 expire 对应,默认5分钟) |
maxAttempts | int | 5 | 最大验证失败次数(超过则锁定验证码,默认5次) |
状态值(verify 字段) | 含义 | 处理逻辑 |
|---|---|---|
| 0 | 未使用(正常) | 可参与验证,正确则改1,错误则减1(记失败次数) |
| 1 | 已验证 | 重复验证返回失败 |
| 2 | 已锁定 | 失败次数达 maxAttempts 后触发,无法再验证 |
| 3 | 已过期 | 超过 expire 时间后触发,无法再验证 |
| < 0(如-1、-2) | 验证失败次数(负数) | 绝对值达 maxAttempts 后,自动改2(锁定) |
sms 函数的 expire 必须与 verify 方法 appinfo['expire'] 一致,否则会导致“提前过期”或“过期未锁定”;sms 函数获取新验证码,旧验证码无法再使用;