PHP验证码的语言包&预警信息通知总结
【摘要】 最近在开发PHP验证码项目,需要使用到不同的语言包和及时的预警短信通知。下面我就好好的总结一下。
开头的话
最近在开发PHP验证码项目,需要使用到不同的语言包和及时的预警短信通知。下面我就好好的总结一下。
语言包
默认使用浏览器语言,选项分别有自动(识别浏览器语言)、简体中文、繁体英文、英文。
self.lang = self.get_lang() # 当前页语言包
def get_lang(self):
""" 获取语言包 """
try:
dLang = self.data.get("lang", "auto") # 获取应用配置
if dLang == "auto": # 自动
dLang = self.kg.get("HTTP_ACCEPT_LANGUAGE", "zh-cn").split(',')[0].lower() # 获取浏览器语言,取逗号前字符且转成小写
if dLang == "zh-hk": dLang = "zh-tw"
if dLang in ("en-us", "en-gb"): dLang = "en"
if not exists(url_absolute(f"config/language/{dLang}.py")): dLang = "zh-cn"
r = import_module(f'config.language.{dLang}').lang.get(self.kg["PY_SELF"], {}) # 加载页面对象
except Exception:
r = {}
return r
预警信息
预警信息启用
开启预警信息通知,填写通知的接收邮箱和接收手机号,并设置验证码的每小时预警数量。当超过预警数量,系统将发送通知。
def excess(self, between=0):
"""
请求/验证次数检测
:param between: [int] 0 检测请求次数是否超额,1 检测验签次数是否超额,2 检测验签次数是否超额
:return [int]: 0 正常,未超标,1 小时超标、2 日限超标、3 月限超标
"""
# 统计的字段名及会员组限制字段名
field = ["request", "verify", "sign"][between]
# 时/天/月时间戳
ceiling = date(format="%Y%m%d%H")
t = [numeric(ceiling), numeric(ceiling[:-2] + "00"), numeric(ceiling[:-4] + "0000")]
# 当前用户组限制额 [-1, -1, 9000]
group_limit = json2dict(self.data[field])
for i in range(0, 3):
if group_limit[i] != -1:
count = self.db.list(
table="statistics",
field=f'SUM(`{field}`) as rSUM',
where=f'`uid` = {self.data["uid"]} && `time` >= {t[i]}',
limit=1, shift=1,
)["rSUM"]
if count > group_limit[i]:
return i + 1
return 0
总结
最后,我大家做了个示例体验:https://www.kgcaptcha.com/demo/,同时也把相关代码上传到GitHub,https://github.com/KgCaptcha。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)